O exemplo que você deu é realmente bom na minha opinião. Você está declarando classes internas , portanto, é perfeitamente sensato mantê-las no mesmo arquivo . A única maneira de contornar isso seria tornar sua Items
classe uma classe parcial e dividi-la em vários arquivos. Eu consideraria essa má prática. Minha política geral para classes aninhadas é que elas sejam pequenas e particulares. Existem duas exceções para isso:
- você está projetando um cluster de classes (mais comum no objetivo-c), portanto, pode ser sensato usar a abordagem de classe parcial
- você precisa de uma enumeração usada apenas com a API pública da classe pai. Nesse caso, prefiro ter uma enumeração pública declarada dentro da classe pai em vez de poluir meu namespace. O enum sendo um "enum interno" efetivamente resulta em um escopo bem definido.
Se você escrever a pergunta um pouco diferente e perguntar sobre "Devo colocar cada classe de nível de namespace em seu próprio arquivo", minha resposta será "sim".
Ao projetar aulas, respeitamos o Princípio da Responsabilidade Única. A leitura do código se torna muito mais fácil se sua forma seguir sua semântica, portanto, a divisão de arquivos por classe é sensata.
Do ponto de vista mecânico, ter um arquivo por classe tem várias vantagens. Você pode abrir várias classes ao mesmo tempo em janelas diferentes. Isso é especialmente importante, pois nenhum desenvolvedor sério trabalha com menos de duas telas. Ser capaz de ter mais contexto em frente da minha cabeça significa que eu posso manter mais contexto em minha cabeça. (A maioria dos IDEs permite abrir o mesmo arquivo duas vezes, mas acho isso estranho).
O próximo aspecto importante é o controle de origem e a mesclagem. Ao manter suas classes separadas, você evita muitos problemas quando são feitas alterações no mesmo arquivo, porque as classes separadas precisam ser alteradas.