Je lisais " Clean Code " de Robert Martin pour devenir, je l' espère, un meilleur programmeur. Jusqu'à présent, rien de tout cela n'a été réellement novateur, mais cela m'a fait penser différemment à la façon dont je conçois des applications et écris du code.
Il y a une partie du livre avec laquelle je ne suis pas d'accord, mais qui n'a pas de sens pour moi, en particulier en ce qui concerne les conventions de dénomination des interfaces. Voici le texte, tiré directement du livre. J'ai mis en évidence l'aspect de ce qui me rend confus et j'aimerais des éclaircissements.
Je préfère laisser les interfaces sans fioritures. Le je précédent, si courant dans les héritages actuels, constitue au mieux une distraction et trop d'informations au pire. Je ne veux pas que mes utilisateurs sachent que je leur donne une interface .
C'est peut-être parce que je ne suis qu'un étudiant, ou peut-être parce que je n'ai jamais fait de programmation professionnelle ou en équipe, mais je voudrais que l'utilisateur sache qu'il s'agit d'une interface. Il y a une grande différence entre implémenter une interface et étendre une classe.
Donc, ma question se résume à: "Pourquoi devrions-nous cacher le fait qu'une partie du code attend une interface?"
Modifier
En réponse à une réponse:
Si votre type est une interface ou une classe, c'est votre affaire, pas celle de quelqu'un qui utilise votre code. Donc, vous ne devriez pas divulguer les détails de votre code dans ce code tiers.
Pourquoi ne devrais-je pas "divulguer" les détails de savoir si un type donné est une interface ou une classe en code tiers? N’est-il pas important que le développeur tiers qui utilise mon code sache s’il va implémenter une interface ou étendre une classe? Est-ce que les différences ne sont tout simplement pas aussi importantes que je les fais paraître dans mon esprit?
to know whether they will be implementing an interface or extending a class
: oui, mais la plupart des utilisateurs de votre code l'appelleront, ne l'implémenteront pas ou ne l'étendront pas, et ils ne se soucient vraiment pas de savoir lequel.