Améliorer votre code JAVA

Existe-t-il une méthode spéciale pour avoir un code propre et performant..? Non ce n'est pas de cela dont je veux vous parler mais d'un Framework permettant d'obtenir un code JAVA plus lisible.

Ce Framework c'est Lombok. Je l'ai découvert récemment lors de la présentation du 18 septembre dernier faite par Thierry Leriche-Dessirier au JUG de lyon.

Ce framework permet de s'affranchir de l'écriture de certaines méthodes par l'ajout d'annotations.

Si nous devons écrire une classe ExempleLombok qui possède différents attributs et certaines méthodes

...
01 public class ExempleLombok {
02   private int maVariable = 10;
03   private String maChaine;
04   
05   @Override public String toString() {
06     return String.format("%s (age: %d)", name, age);
07   }
08   
09   public int getMaVariable() {
10     return maVariable;
11   }
12   
13   public void setMaVariable(int variable) {
14     this.maVariable = variable;
15   }
16   
17   public String getMaChaine() {
18     return maChaine;
19   }
20   
21   public void setMaChaine(String chaine) {
22     this.maChaine = chaine;
23   }
24 
25  public String toString() {
26     return String.format("Variable  = %d (chaine : %s)", maVariable, maChaine);
27  }
28
29  public ExempleLombok (int variable, String chaine) {
30    maVariable = variable;
31    maChaine = chaine;
32  }
...
les méthodes proprement dites de ma classe
}

Avec le framework Lombok, il est alors possible d'écrire cette classe de la façon suivante :

public @Data class ExempleLombok {
02   private int maVariable = 10;
03   private String maChaine;
04 
les méthodes proprement dites de ma classe
}

Le code ainsi produit permet de se focaliser sur les points importants de vos classes en offrant une meilleure possibilité.
Cela s'effectue par l'utilisation de lombok.jar dans votre application.

Dans notre exemple, l'utilisation de @Data englobe un certain nombre de fonctionnalités qu'il est possible d'utiliser unitairement :

  • @Getter / @Setter : pour ne plus écrire les accesseurs.
  • @ToString : pour la génération automatique de la méthode toString
  • @EqualsAndHashCode : pour la génération des méthodes hashCode et equals
  • @NoArgsConstructor, @RequiredArgsConstructor et @AllArgsConstructor : pour la génération des constructeurs
  • @Data : pour un raccourci pour @ToString, @EqualsAndHashCode, @Getter sur tous les champs, @Setter sur les champs non-final, et @RequiredArgsConstructor!
  • @Cleanup : pour appeler la méthode close() pour bien fermer les éléments ouverts
  • @Synchronized : pour la gestion de la protection des appels simultanés
  • ...

Le site Web est accessible ici : projectlombok.org

Vous y trouverez une vidéo permettant d'appréhender le fonctionnement de ce framework. Il me semble très intéressant... A suivre, malgré sa version peut être encore un peu trop jeune.

Ajout du 15/10/2012 : slides et audio de la session au Lyon JUG Slides et audio

2 commentaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.