Modelos de Lombok vs. Eclipse do Projeto / Código
-
26-09-2019 - |
Pergunta
Faz Projeto Lombok Oferecer algum benefício em comparação com os modelos de código / geração de código no Eclipse? Há alguma desvantagem (além de incluir o .jar)?.
Solução
Uma vantagem do Lombok é que, depois de anotar uma aula com, digamos, a anotação @Data, você nunca precisa regenerar o código quando faz alterações. Por exemplo, se você adicionar um novo campo, o @Data incluiria automaticamente esse campo nos métodos iguais, hashcode e tostring. Você precisaria fazer essa alteração manualmente ao usar métodos gerados pelo Eclipse. Algumas vezes, você pode preferir o controle manual, mas na maioria dos casos, espero não.
Outras dicas
A vantagem do Lombok é que o código não está lá - ou seja, as aulas são muito mais legíveis e não estão confusas.
Vantagens:
- Muito fácil de usar
As aulas são muito mais limpas ('sem código de caldeira'), especialmente as classes internas do tipo 'Struct' encolherem para um mínimo nu:
@Data private class AttrValue { private String attribute; private MyType value; }
Isso criará getters e setters, métodos de tostring () e hash () / equals (), incluindo ambas as variáveis. A variante com
@Value
Cria uma estrutura imutável (sem setters, todos os campos finais).- Não há necessidade de gerar/remover código quando você troca de campos (getters, setters, tostring, hash, igual)
- Nenhuma interferência nos métodos codificados à mão: Basta adicionar seu próprio setter específico à classe, quando necessário. Lombok pula isso e gera tudo o mais
Desvantagens:
- Nenhum nome de refatoração, ainda: renomear
value
acima não (ainda) renomearágetValue()
esetValue()
- Pode diminuir a retarda ligeiramente
toString
Saída não tão agradável quanto, por exemplo, ToStringBuilder da Apache Commons
Muito poucos vêm à mente:
- É baseado na anotação, portanto, não é bom para o projeto legado ainda em pré-Java5 (Delombok pode ajudar). Na verdade, requer o uso do compilador Javac v1.6.
- ainda tem limitações em relação a múltiplos construtores
A questão da dependência não deve ser esquecida, mas você a excluiu da sua pergunta.
O Eclipse EMF oferece alguns recursos que são muito úteis que o Lombock ainda não suporta:
- Mecânicos poderosos de notificação para serem informados sobre as mudanças em suas instâncias
- API genérica sem reflexão de Java. Acessar e modificar instâncias sem uma forte referência ao tipo
- Edição baseada em comando e API
- Referências cruzadas entre modelos: Criar e carregar o modelo de árvores e o EMF lida com o carregamento criando um proxy para a referência cruzada. Isso salva a memória e aumenta o desempenho em enormes árvores de domínio
- E muito mais...