タグ

ブックマーク / blog.yuyat.jp (2)

  • 例えば, Singleton を避ける | Born Too Late

    この記事は TDD Advent Calendar jp: 2011 の 14 日目です. 前日: TDD戦略 -TDDを導入し進化させる方法- #TDDAdventJP (@kyon_mm さん) 翌日: TDDに対して思っていること (@gab_km さん) この記事の概要 TDD で開発することで設計上の問題点に気づきやすくなる Singleton はグローバル変数である Singleton の使用はできる限り避けるべきである テスタビリティを意識しよう TDD では, 原則としてユニットテストを書いてから実際のコードを実装します. なので, 自然と「テストのしやすさ (テスタビリティ)」を意識して実装することになります. そして, TDD においては一般的に, テスタビリティを意識することで, 設計が改善されるとされています. オブジェクト指向には難しい概念がたくさん登場します.

  • 代入の返り値は代入値 | Born Too Late

    例えば memoize しながらフィボナッチ数列を求める場合。 class Fibonacci def initialize @memo = [0, 1] end def fibonacci(n) @memo[n] || @memo[n] = fibonacci(n - 2) + fibonacci(n - 1) @memo[n] # この行は省略しても結果は同じ end end fib = Fibonacci.new 10000.times { |n| fib.fibonacci(n) } これで何が嬉しいのかというと、プロファイリングしてみるとこんな結果が現れます。 fibonacci メソッドの最後の行を省略しなかった場合 $ time ruby -rprofile fibonacci.rb % cumulative self self total time seconds seco

    代入の返り値は代入値 | Born Too Late
    yamadar
    yamadar 2014/08/12
    パイソンさんはひと味違う
  • 1