Ich habe " Clean Code " von Robert Martin gelesen , um hoffentlich ein besserer Programmierer zu werden. Obwohl bisher nichts wirklich bahnbrechend war, habe ich anders darüber nachgedacht, wie ich Anwendungen entwerfe und Code schreibe.
Es gibt einen Teil des Buches, mit dem ich nicht nur nicht einverstanden bin, sondern der für mich keinen Sinn ergibt, insbesondere in Bezug auf die Namenskonventionen für Schnittstellen. Hier ist der Text, der direkt aus dem Buch stammt. Ich habe den Aspekt herausgearbeitet, den ich verwirrend finde, und möchte eine Erläuterung dazu.
Ich ziehe es vor, Schnittstellen schmucklos zu lassen. Das vorangegangene I, wie es in den heutigen Legacy Wads üblich ist, ist bestenfalls eine Ablenkung und im schlimmsten Fall zu viele Informationen. Ich möchte nicht, dass meine Benutzer wissen, dass ich ihnen eine Benutzeroberfläche übergebe .
Vielleicht liegt es daran, dass ich nur ein Student bin, oder vielleicht daran, dass ich noch nie professionell oder teambasiert programmiert habe, aber ich möchte, dass der Benutzer weiß, dass es sich um eine Benutzeroberfläche handelt. Es gibt einen großen Unterschied zwischen der Implementierung einer Schnittstelle und der Erweiterung einer Klasse.
Meine Frage lautet also : "Warum sollten wir die Tatsache verbergen, dass ein Teil des Codes eine Schnittstelle erwartet?"
Bearbeiten
Als Antwort auf eine Antwort:
Wenn Ihr Typ eine Schnittstelle oder eine Klasse ist, ist dies Ihr Geschäft, nicht das Geschäft von jemandem, der Ihren Code verwendet. Sie sollten also keine Details Ihres Codes in diesem Code von Drittanbietern veröffentlichen.
Warum sollte ich nicht die Details darüber "verraten", ob ein bestimmter Typ eine Schnittstelle oder eine Klasse für Code von Drittanbietern ist? Ist es nicht wichtig, dass der Drittanbieter, der meinen Code verwendet, weiß, ob er eine Schnittstelle implementiert oder eine Klasse erweitert? Sind die Unterschiede einfach nicht so wichtig, wie ich sie mir vorstelle?
to know whether they will be implementing an interface or extending a class
: Ja, aber die meisten Benutzer Ihres Codes werden ihn aufrufen, nicht implementieren oder erweitern und es ist ihnen wirklich egal, um welchen Code es sich handelt.