4

私は Code Complete を読んでいる最中で、本の終わりに向かって、リファクタリングに関する章で、著者は、リファクタリング中にコードの品質を向上させるためにすべきことをリストしています。

彼のポイントの 1 つは、特にコレクションやイテレータなどを返す場合は、常に可能な限り特定の型のデータを返すことでした。したがって、私が理解しているように、たとえば を返す代わりに、そのデータ型を使用する場合Collection<String>は を返す必要があります。HashSet<String>メソッドの内部。

彼は人々に情報隠蔽のルールを破るように勧めているように聞こえるので、これは私を混乱させます。さて、アクセサーについて話すとき、私はこれを理解しています。それは明確なケースです。しかし、データを計算してマングリングし、メソッドの抽象化のレベルが直接的なデータ構造を意味しない場合、データがバラバラにならない限り、可能な限り抽象的なデータ型Objectを返すのが最善だと思います (私はそうしません)。の代わりに戻りIterable<String>ます。たとえば)。

だから、私の質問は: Code Complete のアドバイスの背後にあるより深い哲学はありますか?

4

6 に答える 6