テスト駆動開発の関係者から、暗黙のうちに大量の情報を取得する関数を持つことは悪いことだとよく耳にします。テストの観点からこれが悪いことはわかりますが、カプセル化の観点からは必要な場合があるのではないでしょうか? 次の質問が頭に浮かびます。
Random と OrderBy を使用するのは良いシャッフル アルゴリズムですか?
基本的に、誰かが C# で配列をランダムにシャッフルする関数を作成したいと考えていました。何人かの人々は、乱数ジェネレーターをパラメーターとして渡す必要があると彼に言いました。これは、テストが容易になるとしても、カプセル化のひどい違反のように思えます。配列シャッフル アルゴリズムがシャッフルしている配列以外の状態を必要とするという事実は、呼び出し元が気にする必要のない実装の詳細ではないでしょうか? この情報を取得する正しい場所は、暗黙のうちに、おそらくスレッドローカル シングルトンからではないでしょうか?