
Envoyé par
yildiz-online
Je ne vais pas donner mon avis (après tout, tout le monde en a un) mais exposer une liste de pour et contre:
Pour:
- Reduit le nombre de classe.
Contre:
- Couple les implémentations et l'interface
- Refactoring compliqué dans le cas où l'interface est déplacée dans une bibliothèque séparée.
- Complique le code (est-ce que la inner classe est static ou pas vu qu'elle est dans une interface? pas clair pour tout le monde au premier coup d'oeil).
- Pratique inhabituelle, le prochain dev qui passera sur le code se demandera pourquoi on a fait comme ça et voudra tout changer.
- Depuis java 8, les inner class avec une seule fonction implementant une interface peuvent être des lambda.(java8+)
- Expose d'office l'implémentation dans un module alors que ce n'est souvent pas souhaitable(java9+)
- Disgracieux au niveau du commit history, un fichier d'interface n'est typiquement modifié que pour des nouvelles fonctionnalités ou un changement d'architecture, dans le cas présent, un bug fix l'affecterait aussi, ce qui n'est pas naturel.
Partager