OOP vs. prozedurale Programmierung - Seite 9

 
Реter Konow:
Ich verstehe, warum ich es nicht verstehe, es ist nicht mein Code, außerdem ist es nur ein Teil davon. Aber Sie scheinen es auch nicht zu verstehen - oder irre ich mich?

Ich benutze keine Zeiger...

Früher habe ich genauso gearbeitet wie du, nur mit Funktionen, aber mit der Zeit mussten sie irgendwie gespeichert werden, dann musste ich sie suchen, jede Funktion machte ihre eigenen zusätzlichen Aktionen.

Jetzt habe ich alles in Klassen umgebaut, und wenn ich die Klasse Order aufrufe, erhalte ich alles, was ich brauche, sowie eine Liste der verfügbaren Funktionen und Methoden...

 
Реter Konow:
Deshalb mache ich gerne große generische Codeblöcke.

Kann nicht einmal glauben, dass der Autor eines guten GUI ohne OOP

Codezeilen einsparen?!

 
СанСаныч Фоменко:

Nein, Ihr Beispiel ist sehr gut.

Es geht nicht um prozedurale Programmierung.

Es gibt ein viel wichtigeres Kriterium für die Programmqualität: die Klarheit des Codes.

Die Lösung, die Sie gegeben haben, ist schrecklich: Es ist überhaupt nicht klar, WELCHE Funktion sinnvollerweise aufgerufen wird. Ich würde einen normalen Schalter und einen Kommentar zu jedem Aufruf schreiben. Dies ist der richtige Code.

Ich schließe aus Ihrem Beispiel, dass OOP eine schädliche Sache ist.


Und warum sollte man sich für 100 Varianten entscheiden, wenn man im Voraus weiß, dass nur 1 verwendet wird?

Welchen Sinn hat ein Wust von 100 Varianten von Schaltern im Vergleich zu drei Codezeilen?

Es ist nicht richtig, etwas komplex, groß und langsam zu machen, was rationell, optimal (sogar perfekt) erledigt werden kann.

OOP ist nur dann schädlich, wenn man es falsch einsetzt.

Bitte antworten Sie auf diesen Kommentar.

 
Реter Konow:
Deshalb mache ich gerne große, universelle Codeblöcke.

Was macht sie universell?

 
Dmitry Fedoseev:

Wozu braucht man einen Schalter mit 100 Varianten, wenn man im Voraus weiß, dass nur eine verwendet wird?

Wie übersichtlich ist ein Schalter mit 100 Varianten im Vergleich zu drei Codezeilen?

Komplexe, große und langsame Dinge zu machen, die rationell, optimal (sogar perfekt) erledigt werden können, ist nicht der richtige Ansatz.

Bitte antworten Sie auf diesen Kommentar.


Es handelt sich nicht um einen Spoiler, sondern um eine Dokumentation der Programmfunktionen in Verbindung mit dem Programmtext. Das ist das Wichtigste, nicht das, was allein funktioniert.

 
Vladimir Pastushak:

Ich benutze keine Zeiger...

Früher habe ich genauso gearbeitet wie du, nur mit Funktionen, aber mit der Zeit mussten sie irgendwie gespeichert werden, dann musste ich sie suchen, jede Funktion machte ihre eigenen zusätzlichen Aktionen.

Jetzt habe ich alles in Klassen umgebaut, und wenn ich die Klasse Order aufrufe, erhalte ich alles, was ich brauche, sowie eine Liste der verfügbaren Funktionen und Methoden...

Wenn es für Sie bequemer ist, habe ich nichts dagegen. Aus meiner reichhaltigen Erfahrung in der Programmierung kann ich sagen, dass sich jede Aufgabe ohne OOP genauso gut lösen lässt, wenn man Universalisierung und Komprimierung auf seine Lösungen anwendet. Das ist eine Erfahrung, die sich in der Praxis bewährt hat. Vielleicht hängt der eine oder andere Ansatz mit den individuellen Eigenheiten unseres Denkens zusammen. Dies ist der wichtigste Punkt, den ich vermitteln möchte.
 
СанСаныч Фоменко:

Dies ist kein Spoiler, sondern eine Dokumentation der Funktionalität des Programms in Verbindung mit dem Text des Programms. Das ist das Wichtigste, nicht das, was allein funktioniert.


Sowohl die Schlacke als auch der Ballast. Die Fliegen sollten getrennt sein, die Koteletts getrennt. Die Dokumentation ist wichtig, aber sie sollte den Betrieb des Programms nicht beeinträchtigen.

 
Dmitry Fedoseev:

Was macht sie universell?

Sie benötigen zum Beispiel einen Block, der grafische Objekte relativ zueinander positioniert, indem er Steuerelemente erstellt. Gleichzeitig steuert derselbe Block das Phänomen der Objekte, d. h. er verbirgt einige Objekte und zeigt andere. Es berechnet auch die Abmessungen der Bildlaufleiste und die Gesamtabmessungen des Fensters. Sie berechnet auch die Bewegung des Schiebereglers in der Bildlaufleiste. Dies ist der universelle Block der Objektbeziehungen.


Oder ein Block, der die Größe des Fensters steuert, wenn der Fenstergriff ergriffen wird. Oder ein Block, der die Zustände von Steuerelementen kontrolliert. Oder der Block, der berechnet, auf welchem Element sich der Cursor befindet, und gleichzeitig viele globale Parameter in den Fokus bringt...

 
Реter Konow:
Sie benötigen zum Beispiel einen Block, der grafische Objekte relativ zueinander positioniert, indem er Steuerelemente erstellt. Gleichzeitig steuert derselbe Block das Phänomen der Objekte, d. h. er verbirgt einige Objekte und zeigt andere. Es berechnet auch die Abmessungen der Bildlaufleiste und die Gesamtabmessungen des Fensters. Sie berechnet auch die Bewegung des Schiebereglers in der Bildlaufleiste. Dies ist der universelle Objektbeziehungsblock.

Aber das wird doch durch "if and switch" realisiert, oder?

 
Dmitry Fedoseev:

Aber das wird doch durch "if and switch" realisiert, oder?

Ja, diese Blöcke haben beides. Aber glauben Sie mir - sie sind maximal komprimiert und vielseitig, weil sie eine breite Palette von Problemen lösen.