Comme vous le dites, les événements sont un excellent outil pour réduire le couplage entre les classes; Ainsi, même si cela peut impliquer l'écriture de code supplémentaire dans certains langages sans prise en charge intégrée des événements, cela réduit la complexité de la vue d'ensemble.
Les événements sont sans doute l'un des outils les plus importants d'OO (selon Alan Kay - les objets communiquent en envoyant et en recevant des messages ). Si vous utilisez un langage qui prend en charge les événements ou traite les fonctions comme des citoyens de première classe, leur utilisation est une évidence.
Même dans les langues sans support intégré, la quantité de passe-partout pour quelque chose comme le modèle Observer est assez minime. Vous pourriez être en mesure de trouver une bibliothèque d'événements générique décente quelque part que vous pouvez utiliser dans toutes vos applications pour minimiser le passe-partout. (Un agrégateur d'événements générique ou un médiateur d'événements est utile dans presque tous les types d'applications).
Est-ce utile dans une petite application? Je dirais certainement oui .
- Garder les classes découplées les unes des autres maintient votre graphique de dépendance de classe propre.
- Les classes sans dépendances concrètes peuvent être testées isolément sans tenir compte des autres classes dans les tests.
- Les classes sans dépendances concrètes nécessitent moins de tests unitaires pour une couverture complète.
Si vous pensez "Oh mais ce n'est vraiment qu'une très petite application, cela n'a pas vraiment d'importance" , considérez:
- Les petites applications finissent parfois par être combinées avec des applications plus grandes par la suite.
- Les petites applications sont susceptibles d'inclure au moins une partie de la logique ou des composants qui devront éventuellement être réutilisés dans d'autres applications.
- Les exigences pour les petites applications peuvent changer, ce qui nécessite de refactoriser, ce qui est plus facile lorsque le code existant est découplé.
- Des fonctionnalités supplémentaires peuvent être ajoutées ultérieurement, ce qui nécessite d'étendre le code existant, ce qui est également beaucoup plus facile lorsque le code existant est déjà découplé.
- Le code à couplage lâche ne prend généralement pas beaucoup plus de temps à écrire qu'un code à couplage serré; mais le code étroitement couplé prend beaucoup plus de temps pour refactoriser et tester que le code faiblement couplé.
Dans l'ensemble, la taille d'une application ne devrait pas être un facteur décisif pour savoir si les classes doivent être couplées de manière lâche; Les principes SOLID ne sont pas seulement pour les grandes applications, ils s'appliquent aux logiciels et aux bases de code à n'importe quelle échelle.
En fait, le temps économisé en tests unitaires de vos classes faiblement couplées isolément devrait contrebalancer tout temps supplémentaire passé à découpler ces classes.