Além de argumentos hipotéticos e focando no Windows .NET com o Visual Studio IDE e em projetos de software em expansão, faz sentido nesse contexto ter uma classe por arquivo.
Em geral, para referência visual, nada supera uma classe por arquivo. Realmente.
Não sei se a Microsoft faz ou não faz o mesmo, no entanto, eles criaram a partialpalavra - chave para dividir uma classe em vários arquivos (isso é ainda mais grave). É frequentemente usado para dividir o código de designer gerado automaticamente do seu código personalizado na mesma classe (mas às vezes é usado para permitir que diferentes desenvolvedores trabalhem na classe ao mesmo tempo por meio de arquivos diferentes). Portanto, a Microsoft vê os benefícios de vários arquivos e todo mundo tem em mente várias idéias de organização de arquivos com certeza no .NET.
Para classes aninhadas, você não tem escolha a não ser usar um arquivo ou pelo menos as primeiras partes das classes. Um arquivo é necessário e bom neste caso:
class BicycleWheel {
class WheelSpoke {
}
}
Caso contrário, por que você manteria várias classes em um arquivo? O argumento "porque eles são pequenos" ou associados um ao outro não retém muita água porque, eventualmente, suas classes serão associadas a outras classes. Por fim, você não pode inferir facilmente a organização de objetos no arquivo com base no uso deles, especialmente à medida que o software continua a crescer.
Além disso, se você usar pastas para espaços para nome , nunca terá um conflito de nome de arquivo de classe. Também é conveniente localizar uma classe por nome de arquivo no sistema de arquivos quando não estiver em um ambiente de desenvolvimento como o Visual Studio (por exemplo, se você deseja editar rapidamente uma classe com o Bloco de Notas ou algo rápido / leve ).
Tantas boas razões ...