私の意見では、あなたが与えた例は実際には問題ありません。あなたは内部クラスを宣言しているので、それらを同じファイルに保管するのは完全に賢明です。これを回避する唯一の方法は、Items
クラスを部分クラスにし、それを複数のファイルに分割することです。私はこの悪い習慣を検討します。ネストされたクラスの私の一般的なポリシーは、それらが小さくプライベートであることです。これには2つの例外があります。
- クラスクラスター(objective-cでより一般的)を設計しているため、部分クラスアプローチを使用するのが賢明かもしれません。
- 親クラスのパブリックAPIでのみ使用される列挙が必要です。この場合、名前空間を汚染するのではなく、親クラス内でパブリック列挙型を宣言することを好みます。「内部列挙」である列挙型は、効果的に適切に定義されたスコープを与えます。
質問を少し違った言葉で言い、「各名前空間レベルのクラスを独自のファイルに入れるべきか」と尋ねると、私の答えは「はい」になります。
クラスを設計するときは、単一責任の原則を尊重します。コードの形がセマンティクスに従うとコードが読みやすくなります。したがって、クラスごとにファイルを分割するのが賢明です。
機械的な観点からは、クラスごとにファイルを持つことにはいくつかの利点があります。異なるウィンドウで複数のクラスを同時に開くことができます。真面目な開発者は2つ未満の画面で作業しないため、これは特に重要です。頭の前でより多くのコンテキストを持つことができるということは、頭の中でより多くのコンテキストを維持できることを意味します。(ほとんどのIDEでは同じファイルを2回開くことができますが、これは厄介です)。
次の重要な側面は、ソース管理とマージです。クラスを分離しておくことで、同じファイルに変更が加えられたときに、別のクラスを変更する必要があるため、多くの面倒を回避できます。