Der Grund, warum ich diese Frage gestellt habe, liegt tatsächlich darin, dass ich diese Antwort auf Zhihu gelesen habe:
Was sind die häufigsten Low-Level-Fehler bei der PHP-Programmierung?
http://www.zhihu.com/question...
Der falsche Ansatz wurde erwähnt:
Bei Verwendung von Class als Namespace ist die Methode die Funktion von Class
Was ist daran falsch?
Der Grund, warum ich diese Frage gestellt habe, liegt tatsächlich darin, dass ich diese Antwort auf Zhihu gelesen habe:
Was sind die häufigsten Low-Level-Fehler bei der PHP-Programmierung?
http://www.zhihu.com/question...
Der falsche Ansatz wurde erwähnt:
Bei Verwendung von Class als Namespace ist die Methode die Funktion von Class
Was ist daran falsch?
Die Verwendung prozeduraler strukturierter Programmierung ist „ideologische Verfestigung“? Ich denke, dass die Behandlung von „objektorientiert“ als universelles „Einheitsmodell“ eine „achtbeinige, essayartige ideologische Verfestigung“ ist und sogar vorgeschlagen wird Es orientiert sich vollständig an den „One Size Fits All Extreme“-Programmieranforderungen von Objekten. Der größte Vorteil des Objektdenkens liegt darin, dass verwandte Funktionen gekapselt und für andere zum Aufruf bereitgestellt werden können Namenskonflikt, ändern Sie einfach den Klassennamen. Wenn es einen Namenskonflikt mit einer Klasse gibt, müssen Sie die Präfixe mehrerer Funktionen ändern. Es ist also nichts Falsches daran, Klassen als Namespaces zu verwenden
Schauen wir uns PHP selbst an. Die von PHP bereitgestellten Funktionen umfassen zwei Arten der Kapselung: funktionsbasierte und klassenbasierte Kapselung. Die funktionsbasierte Kapselung umfasst häufig verwendete Zeichenfolgenoperationsfunktionen und Array-Operationsfunktionen usw. Die basierte Kapselung umfasst SPL-Bibliotheken usw. Würden Sie sagen, dass objektorientierte Programmierung fortgeschrittener und bequemer sein muss als prozedurale Programmierung? Wenn Sie sich wirklich für objektorientierte Programmierung interessieren, sollten Sie das nicht lernen Java, wo alle Bibliotheken auf Klassenkapselung basieren und „vollständig objektorientiert“ sind?Java-Meister Wang Yin betrachtet objektorientierte Programmierung:
„Objektdenken“ als Möglichkeit des Datenzugriffs hat gewisse Vorteile. Allerdings ist „objektorientiert“ (mit dem Zusatz „orientiert“) nur eine weit hergeholte und überzogene Verwendung dieser ursprünglich guten Idee. Viele objektorientierte Sprachen behaupten, dass „alles ein Objekt“ ist, packen alle Funktionen in sogenannte Objekte, sogenannte „Methoden“, und nennen gewöhnliche Funktionen „statische Methoden“. Tatsächlich müssen Sie nur sehr selten, wenn eine Abstraktion erforderlich ist, „Methoden“ verwenden, die in das Objekt eingebettet und eng mit den Daten integriert sind. In anderen Fällen möchten Sie eigentlich nur Transformationsoperationen zwischen Daten ausdrücken. Diese können mithilfe gewöhnlicher Funktionen ausgedrückt werden, was einfacher und direkter ist. Alle Funktionen in Objekte zu packen bedeutet, das Pferd von hinten aufzuzäumen, denn Funktionen selbst gehören nicht zu Objekten, sondern sind lediglich Transformationsoperationen an Objekten. Die meisten Funktionen sind unabhängig von Objekten und können nicht als „Methoden“ bezeichnet werden. Alle Funktionen in Objekte zu zwingen, zu denen sie ursprünglich nicht gehören, und sie alle als „Methoden“ zu behandeln, führt zu einer übermäßig komplexen objektorientierten Codelogik. Es ist eine sehr einfache Idee, aber man muss viele Umwege gehen, um sie klar auszudrücken.Viele Menschen wissen immer noch nicht, dass viele der Vorteile der von ihnen verwendeten „objektorientierten Sprache“ von prozeduralen Sprachen geerbt werden. Den meisten objektorientierten Sprachen fehlt ein korrekter Mechanismus zur Implementierung erstklassiger Funktionen. Die Java-Sprache ist ein Extrem, sie erlaubt überhaupt nicht, dass Funktionen als Daten übergeben werden. Sie müssen alle Funktionen in Klassen kapseln und sie „Methoden“ nennen, aber wie gesagt, das ist eine Entführung. Der Mangel an erstklassigen Funktionen ist der Hauptgrund dafür, dass es in Java so viele „Entwurfsmuster“ gibt. Sobald Sie über erstklassige Funktionen verfügen, benötigen Sie die meisten dieser Designmuster nicht mehr.
Nur persönliche Meinung:
Das größte Problem ist, dass
ich nicht aus dem Prozess herauskomme und nicht verstehen kann, was die objektorientierte Programmierung wirklich verändert und was die wirklichen Vorteile der objektorientierten Programmierung sind, geschweige denn der Schnittstelle -orientierte Programmierung. 思想的固化