Je pense que beaucoup de gens essaient de sur-concevoir des solutions. Ils adoptent l'approche "Adam & Eve" alors qu'une approche légèrement plus pratique simplifierait beaucoup les choses.
Les cours spécialisés ne sont pas mauvais, ils sont la conséquence naturelle d'une conception logicielle saine.
De nombreux programmeurs, à mon avis, ne parviennent pas à comprendre cela et il n'y a pas de livre à ma connaissance qui le dise clairement.
Une autre chose qui aide certainement est TDD, qui vous permet de comprendre "comment" vous utiliserez la classe dans la pratique et peut dans de nombreux cas sauver la journée, car elle montre des problèmes / limitations éventuels tôt dans la journée.
Enfin, une autre chose TRÈS importante que je rechercherais si j'étais vous est les modèles de conception. Les modèles de conception permettent aux gens plus intelligents que vous ou moi de résoudre les problèmes de programmation. L'idée derrière les modèles, devinez quoi?, Est qu'ils ne doivent pas être utilisés comme livres de cuisine, recettes que vous venez de claquer là-bas, mais réfléchis et comprenant d'abord et avant tout votre domaine d'application.
Une utilisation judicieuse du modèle réduira considérablement la quantité de détails que vous devez gérer.
Une bonne bibliothèque de modèles de conception, conçue autour de vos besoins, s'avérera inestimable. Voyons un exemple très simple pour mettre les choses en contexte:
imaginez que vous avez un formulaire où, lorsqu'un bouton est enfoncé, d'autres formulaires doivent se mettre à jour eux-mêmes. Il s'agit d'un schéma typique "d'observateur". Vous avez un sujet et plusieurs observateurs qui s'enregistrent eux-mêmes auprès du sujet. Pourquoi avez-vous besoin d'implémenter une interface? Vous pouvez simplement ajouter les méthodes, ou mieux encore, utiliser une interface pour les observateurs et une liste générique pour le sujet. Maintenant, vous avez le meilleur des deux mondes: l'indépendance pour les observateurs et pas de trucs flous sur le sujet.
J'espère que cela a du sens pour vous!
Andrea