Wie so oft in der Programmierung, hängt es sehr von der Situation ab.
Zum Beispiel, was ist die Kohäsion der Klassen in Frage? Sind sie eng gekoppelt? Sind sie vollständig orthogonal? Sind sie in der Funktionalität verwandt?
Es wäre nicht für einen Web-Framework aus der Reihe sein, einen Mehrzweck widgets.whatever Datei zu liefern, enthält BaseWidget, TextWidget, CharWidget usw.
Ein Benutzer des Rahmens würde nicht aus der Reihe sein, bei der Festlegung eine more_widgets-Datei, die die zusätzlichen Widgets enthält, die sie von den Framework-Widgets für ihren spezifischen Domänenbereich ableiten.
Wenn die Klassen orthogonal sind und nichts miteinander zu tun haben, wäre die Gruppierung in eine einzige Datei tatsächlich künstlich. Übernehmen Sie eine Anwendung zur Verwaltung einer Roboterfabrik, die Autos baut. Eine Datei, die Teile mit CarParts und RobotParts genannt wird, wäre sinnlos ... zwischen der Bestellung von Ersatzteilen für die Wartung und den Teilen, die die Fabrik herstellt, wird wahrscheinlich keine große Beziehung bestehen. Ein solcher Beitritt würde keine Informationen oder Kenntnisse über das System hinzufügen, das Sie entwerfen.
Vielleicht die beste Faustregel ist, beschränken Sie Ihre Entscheidungen nicht durch eine Faustregel. Faustregeln werden für eine erste Schnittanalyse erstellt oder um die Auswahl derjenigen einzuschränken, die keine guten Entscheidungen treffen können. Ich denke, die meisten Programmierer würden gerne glauben, dass sie in der Lage sind, gute Entscheidungen zu treffen.
Wie in http://stackoverflow.com/questions/360643/is-it-a-bad-practice-to-have-multiple-classes-in-the-same-file/360675#360675 erwähnt, mit gemeinsamen Navigationstools müssen Sie sowieso nicht nach Dateien navigieren. Sie navigieren stattdessen nach Klassen/Mitgliedern. – Suma