1. ホーム
  2. oop

干し草の中からどうやって針を見つけるの?

2023-10-13 04:15:33

質問

オブジェクト指向で干し草の山の針探しを実装する場合、基本的に3つの選択肢があります。

1. needle.find(haystack)

2. haystack.find(needle)

3. searcher.find(needle, haystack)

どちらが好きですか、またその理由は?

第3のオブジェクトの導入を避けるため、第2の選択肢を好む人がいることは知っています。しかし、少なくとも現実の世界をモデル化することが目的であるならば、3番目のアプローチの方が概念的に正しいように感じざるを得ません。

この例のサーチャーのようなヘルパーオブジェクトを導入することは、どのような場合に正当化され、どのような場合に避けるべきとお考えですか?

どのように解決するのですか?

通常、アクションは、アクションを実行する対象...この場合は干し草の山に適用されるべきですから、選択肢2が最も適切だと思います。

第4の選択肢もありますが、これは第3の選択肢よりも良いと思います。

haystack.find(needle, searcher)

この場合、検索したい方法をアクションの一部として提供することができるので、操作対象であるオブジェクトとアクションを一緒にしておくことができます。