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)?.

Foi útil?

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() e setValue()
  • 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:

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...
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top