Un titre un peu barbare pour un constat simple : Java est trop compliqué ! Dans l'industrie de logiciel, notamment les grandes SSII recrutant des débutants, la qualité du code est assez exécrable, même avec de bon outils et process (tests systématiques, intégration continue, qualimétrie...) J'émets l'hypothèse que Java lui-même (et les langages orientés classe en général) est en partie en cause. Certaines de ses features, présentent des inconvénients majeures que j'expose dans cette présentation. Je vais jusqu'à dire que ces features sont même plus dangereuses qu'utiles. Pourtant, les inconvénients ne sont jamais abordés dans la formation du programmeur. Par conséquent, il y a un écart entre académie et industrie, qui nuit à la qualité du code dans l'industrie.
15. Deux styles de méthodes privées
// field equals x
doSomething();
// field equals y
Parfum variable globale
// field equals x
field = computeSomething();
// field equals y
Méthode détachée de son objet
16. Des objets à la rescousse
Test
Interface
mpub
Implémentation
Nouvelle
dépendance
Nouvelle
dépendance
mpub
mpub
cp
cp
34. C’est l’enfer !
●
●
●
●
Difficile à tester
Difficile à maintenir
Dépendances étranges
Et ça sert à...quoi exactement ?
■ L’héritage d’interfaces fournit déjà le
polymorphisme
■ La composition fournit déjà de quoi réutiliser les
implémentations
35. Solution : composition
interface MembreDeLaFamille {...}
class Mère implements MembreDeLaFamille {...}
class Fille implements MembreDeLaFamille {
private final MembreDeLaFamille mère;
public Fille(MembreDeLaFamille mère) {
this.mère = mère;
}
...
}
42. L’enfer 2.0
●
●
●
●
Difficile à tester
Difficile à maintenir
Détruit tout polymorphisme
Rend les classes potentiellement variables…
alors qu’elles sont globales !