Percebi que um colega de trabalho e eu temos práticas opostas em relação à ordenação de métodos em nossas classes Java. Um de nós inicia uma aula com seus principais métodos públicos e depois coloca todos os auxiliares particulares em seguida. O outro de nós garante que os métodos públicos estejam no final.
Claramente, isso é apenas uma questão de estilo e não há resposta certa. No entanto, antes de decidirmos que esse assunto é apenas mais uma luta entre os Yooks e os Zooks e escolhermos arbitrariamente um ou outro, fiquei pensando se talvez houvesse uma recomendação padrão de guia de estilo Java ou algum motivo prático pelo qual uma abordagem seja melhor que a outra.
java
coding-style
Brandon Yarbrough
fonte
fonte
Respostas:
Embora se refira à preferência normalmente, você certamente deve tentar aderir a um padrão comum em sua organização. Portanto, o que você decidir, escolha um padrão e adote-o universalmente.
Quanto à sua escolha, se você seguir as sugestões oferecidas no Código Limpo , poderá ler o arquivo de cima para baixo como um artigo de jornal, o que sugere naturalmente que os métodos auxiliares apareçam após os métodos em que estão. ajudando. Isso levaria à legibilidade máxima da estrutura do código. Então, se você tivesse
Seu arquivo seria estruturado como
Outro efeito colateral disso é que você descobre que seus ajudantes têm ajudantes próprios e ajuda a descobrir o que você realmente tem é outra classe vivendo em seu arquivo e pode refatorar de maneira limpa para extraí-lo para sua própria classe, pois esses métodos são já agrupados em ordem. Mas isso é um benefício secundário.
fonte
Métodos públicos são a interface da classe. Alguém interessado em usar sua classe se preocupará apenas com a interface. Da perspectiva de um usuário de classe, seria útil ter os métodos públicos primeiro para reduzir a rolagem.
fonte
Em C e C ++, os métodos auxiliares geralmente são colocados em primeiro lugar, porque você não precisa de uma declaração. Muitas pessoas carregaram esse hábito para outras línguas onde isso não importa.
Prefiro os métodos públicos no topo, porque geralmente quando abro um arquivo, procuro sua interface pública. Não quero ter que rolar todos os detalhes da implementação. Também é o estilo mais popular que eu já vi, então há isso a ser dito sobre convenções.
fonte
Eu gosto que a ordem dos métodos em uma classe seja baseada na legibilidade e no contexto, não na visibilidade.
isto é, um método 'aberto' provavelmente pertence antes de um 'fechamento'. Se dois métodos públicos 'a' e 'b' chamam um 'c' privado, e eles são os únicos a chamá-lo - então eu gosto de 'c' estar ao lado deles.
Não acho que uma convenção de ordenação de métodos baseada em visibilidade seja uma coisa boa.
fonte
Costumo preferir ver minhas aulas em que os membros são listados em ordem de importância / visibilidade (aqui, por importância, quero dizer que têm impacto direto na interface pública).
Assim, funções privadas tendem a ser empurradas para baixo.
Há exceções nisso, onde também tenderei a agrupar funções semelhantes, de modo que ainda é possível encontrar pequenas funções privadas misturadas com o material público.
Isso é, como você disse, uma questão de gosto.
No entanto, ao trabalhar com código que não é meu, tentarei seguir as convenções usadas no projeto.
Uma boa maneira que encontrei para acompanhar isso é (supondo que você trabalhe com o Eclipse) criar uma configuração de formatação de código e exportá-la com a fonte do projeto e comprometê-la com o controle da fonte. Dessa forma, a convenção de código mais recente e melhor para o projeto está a apenas alguns cliques de distância para configurar e criar um habbit de CTRL-SHIFT-F antes que você cometa evitará muitos argumentos.
O bônus adicional de usar formatadores automáticos é que você pode fazer as coisas em qualquer convenção que o faça feliz e apenas formatar o código antes de confirmar. YMMV, dependendo da referida convenção e ferramenta de formatação.
fonte