Pergunta

Meu projeto está implementando lentamente as anotações Java. Metade dos desenvolvedores - inclusive eu - descobriu que fazer qualquer coisa complexa com anotações parece adicionar à nossa carga geral de manutenção. A outra metade da equipe pensa que são os joelhos da abelha.

Qual é a sua experiência no mundo real com equipes de desenvolvedores sendo capazes de manter o código anotado?

Foi útil?

Solução

Eu sinto que isso se divide em dois usos das anotações - anotações para fornecer uma 'descrição' de uma classe versus anotações para fornecer uma 'dependência' da classe.

Estou bem com um uso de anotações de 'descrição' da aula - isso é algo que pertence à classe e a anotação ajuda a fazer uma versão abreviada disso - as anotações da JPA se enquadram nessa.

No entanto, eu realmente não gosto das anotações de 'dependência' - se você está colocando a dependência diretamente da classe - mesmo que seja determinada em tempo de execução de uma anotação e não em tempo de compilação na classe - não é que a dependência de quebra injeção? (talvez em espírito e não em regra ...)

Pode ser preferência pessoal, mas eu Curti O único arquivo XML Big que contém todas as informações de dependência do meu aplicativo - vejo isso como 'Configuração do aplicativo' em vez de 'Configuração da classe'. Prefiro pesquisar em um local conhecido do que pesquisar todas as classes no aplicativo.

Outras dicas

Minha experiência pessoal é que, em média, lidar com as anotações é muito mais fácil para a maioria dos desenvolvedores do que lidar com o seu inferno de configuração Java XML padrão. Para coisas como JPA e testes de primavera, eles são absolutamente salvados.

O bom das anotações é que elas fazem a configuração nas suas classes auto-documentação. Agora, em vez de ter que pesquisar em um enorme arquivo XML para tentar descobrir como uma estrutura está usando sua classe, seu classe diz lhe.

Geralmente, o problema com alterações como essa é que se acostumar com eles simplesmente leva tempo. A maioria das pessoas, incluindo desenvolvedores, resiste à mudança. Lembro -me de quando comecei a trabalhar com a primavera. Nas primeiras semanas, me perguntei por que alguém aguentaria as dores de cabeça associadas a ele. Então, algumas semanas depois, eu me perguntei como eu já vivi sem ele.

Eu absolutamente amor anotações. Eu os uso da Hibernate/JPA, costura, Jaxb .... qualquer coisa que eu puder. IMO, não há nada pior do que ter que abrir um arquivo XML apenas para descobrir como uma classe é tratada.

Para minhas anotações oculares, permitem que uma aula fale por si. As anotações também fazem (espero) parte do seu assistência ao conteúdo do seu IDES, enquanto com a configuração XML você geralmente está por conta própria.

No entanto, pode se resumir a como as configurações e anotações XML são realmente usadas por qualquer biblioteca específica (como a maioria oferece ambos) e que tipo de anotação é usada. Eu posso imaginar que as anotações que definem algo que é específico para compilação (por exemplo, caminhos de arquivo/URL) podem realmente ser mais fáceis como a configuração XML.

Depende muito do suporte do IDE. Sinto que as anotações devem ser mantidas em sincronia com o código por meio de verificações no IDE, mas que o suporte para isso é um pouco falta.

Por exemplo, a versão mais antiga da Idea avisaria se você substituísse uma função sem @Override, mas não removeria a tag @Override se você mudasse a assinatura do método (ou a assinatura da Superclass, para esse assunto) e quebrasse a relação.

Sem suporte, acho uma maneira pesada de adicionar metadados ao código.

Pessoalmente, sinto que o caso de uso específico que você mencionou (formulários da Web de generalidade automática) é um ótimo caso de uso para anotações. Qualquer tipo de cenário de "estrutura", onde você pode escrever código simplificado e deixar a estrutura fazer o levantamento pesado (geralmente repetitivo) com base em algumas sugestões (também conhecidas como anotações) é, penso, o caso de uso ideal para anotações.

Estou curioso por que você não Como anotações nessa situação e o que você considera a "carga de manutenção"? (E, não estou tentando insultar sua posição, apenas entenda).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top