多態性が必要か否かFizzBuzzをRubyで解くとする。このとき、いきなり:100.fizzbuzzのように、Fixnumのインスタンスメソッドとして実装しようとは思わない。FizzBuzz.fizzbuzz(100)のように、FizzBuzzモジュールのモジュール関数として実装するだろう。fizzbuzzメソッドの引数としてRangeオブジェクトも渡せるようにしたくなったらどうか。FizzBuzz.fizzbuzz(100)FizzBuzz.fizzbuzz(10..100)の代わりに:100.fizzbuzz(10..100).fizzbuzzとしたくなるかもしれない。この場合、多態性が必要か否かが、モジュール関数にするかインスタンスメソッドにするかの判断基準となる。fizzbuzzは微妙かもしれないが、to_sのようにメソッドが汎用的であればあるほど、インスタンスメソッドへの欲求が強くなる。インスタンス変数が複数回使われるか否かRangeへの対応は不要だが、FizzBuzz出力の区切り文字を指定させたくなったらどうか。","fizzbuzzer.fizzbuzz(100)とすべきか。","fizzbuzzer.fizzbuzz(100)fizzbuzzer.fizzbuzz(200)のように、@delimiterが複数回使われるのであれば、インスタンスメソッドにするかもしれない。インスタンス変数の使われる回数が多いと予想されればされるほど、インスタンスメソッドへの欲求が強くなる。",")のようにすると、それぞれの引数の意味が分かりにくくなると『クラス設計の考え方』で指摘されている。キーワード引数を使えば、さほど問題にはならないだろう。Iwamoto@iwamotENECHANGE株式会社VPoT兼CTO室マネージャー。Operations)。CODT2024/CNDW2024運営委員。Japan技術サポート。AWS認定とIPA試験の全区分に合格。