Introduction
La maintenabilité d'une application dépend fortement de la lisibilité du code source sous-jacent. Cette lisibilité peut être améliorée par :
- l'introduction (mesurée) de commentaires dans le code
- la présence sysématique de Javadoc
- la vérification automatique à l'aide d'outils comme CheckStyle et PMD (règles de nommage, mesure de complexité...etc)
- la revue de code effectuée par un développeur tiers
Exemple
public class Person {
private String firstName;
private String lastName;
private Person father;
private Person mother;
public void setFirstName(String firstName){
this.firstName = firstName
}
public void setLastName(String lastName){
this.lastName = lastName
}
public void setFather(Person father){this.father = father}
public void setMother(Person mother){this.mother = mother}
//Getters volontairement omis pour plus de clarté
...
}
Ceci est une classe Person pouvant servir d'entité dans une application d'arbre généalogique. Créons un objet de ce type : //La personnePerson person = new Person();person.setFirstName("Youri");person.setLastName("Gagarine");//Le papaPerson father= new Person();father.setFirstName("Alexeï");father.setLastName(" Ivanovitch");//La mamanPerson mother = new Person();mother.setFirstName("Anna");mother.setLastName("Timofeïevna");//La familleperson.setFather(father);person.setMother(mother);
Premier constat : ce code est verbeux. On aimerait qu'il ressemble à : //La personnePerson person = new Person().setFirstName("Youri").setLastName("Gagarine");//Le papaPerson father= new Person().setFirstName("Alexeï").setLastName("Ivanovitch");//La mamanPerson mother = new Person().setFirstName("Anna").setLastName("Timofeïevna");//La familleperson.setFather(father).setMother(mother);- Créer une première personne dont le prénom et le nom....
- Créer une deuxième personne dont le prénom et le nom....
- Créer une troisième personne dont le prénom et le nom....
- Lier la première personne au deux autres à l'aide des liens de paternité et de maternité.
public class Person {
.....
public Person setFirstName(String firstName){
this.firstName = firstName;
return this;
}
public Person setLastName(String lastName){
this.lastName = lastName;
return this;
}
public Person setFather(Person father){
this.father = father ;
return this;
}
public Person setMother(Person mother){
this.mother = mother ;
return this;
}
...
}