Das Beispiel, das Sie gegeben haben, ist meiner Meinung nach in Ordnung. Sie deklarieren innere Klassen , daher ist es durchaus sinnvoll, sie in derselben Datei zu belassen . Der einzige Weg, dies zu umgehen, wäre, Ihre Items
Klasse zu einer Teilklasse zu machen und sie auf mehrere Dateien aufzuteilen. Ich würde diese schlechte Praxis in Betracht ziehen. Meine allgemeine Richtlinie für verschachtelte Klassen lautet, dass sie klein und privat sein sollten. Hiervon gibt es zwei Ausnahmen:
- Sie entwerfen einen Klassencluster (häufiger in Objective-c), daher kann es sinnvoll sein, den partiellen Klassenansatz zu verwenden
- Sie benötigen eine Aufzählung, die nur mit der öffentlichen API der übergeordneten Klasse verwendet wird. In diesem Fall ist es mir lieber, eine öffentliche Enumeration in der übergeordneten Klasse zu deklarieren, als meinen Namespace zu verschmutzen. Die Aufzählung als "innere Aufzählung" führt effektiv dazu, dass ihr ein genau definierter Geltungsbereich zugewiesen wird.
Wenn Sie die Frage etwas anders formulieren und fragen, ob jede Namespace- Klasse in einer eigenen Datei abgelegt werden soll, lautet die Antwort "Ja".
Bei der Gestaltung des Unterrichts respektieren wir das Prinzip der Einzelverantwortung. Das Lesen von Code wird viel einfacher, wenn seine Form der Semantik folgt. Daher ist es sinnvoll, Dateien nach Klassen zu unterteilen.
Aus mechanischer Sicht hat eine Datei pro Klasse mehrere Vorteile. Sie können mehrere Klassen gleichzeitig in verschiedenen Fenstern öffnen. Dies ist besonders wichtig, da kein seriöser Entwickler mit weniger als zwei Bildschirmen arbeitet. Die Möglichkeit , mehr Kontext in hat vorne meinem Kopf zu haben, bedeutet, dass ich mehr Kontext in meinem Kopf behalten kann . (Mit den meisten IDEs können Sie dieselbe Datei zweimal öffnen, aber ich finde das umständlich.)
Der nächste wichtige Aspekt ist die Quellcodeverwaltung und das Zusammenführen. Indem Sie Ihre Klassen getrennt halten, vermeiden Sie viel Ärger, wenn Änderungen an derselben Datei vorgenommen werden, da separate Klassen geändert werden müssen.