Guten Tag (oder Abend oder Morgen, je nachdem, wann dieser Beitrag veröffentlicht wird).
Ich möchte über den Elite-Teil des Programmierens sprechen und Anfängern in der Back-End-Entwicklung (und nicht nur) im Allgemeinen eine offensichtliche Idee vermitteln, indem ich versuche, in Habré mit dem Schreiben zu beginnen.
Also
Jeder Programmierer mit zumindest ein wenig gutem Geschmack, der aus freien Stücken mit dem Programmieren begonnen hat, nachdem er die Grundlagen der Sprache verstanden und die ersten Projekte geschrieben hat, wird nicht gefragt, wie man etwas macht, sondern wie man etwas richtig macht und was die Standards sind Schönheit. "
Diese wahren Fragen werden ihn früher oder später zu den obskuren Namen „Abstract Factory“, „Singleton“, „Mediator“ und den ebenso verständlichen Abkürzungen SOLID, GRASP führen.
Bitte beachten Sie, dass ich das Beispiel von OOP, MVC, ORM nicht zitiert habe - dies sind Konzepte mit einer ganz bestimmten Bedeutung und einem bestimmten Umfang und einem Mindestmaß an Abstraktion.
OOP sagt: "Alter, ich habe einen klaren und verständlichen Weg gefunden, Programme zu präsentieren."
MVC sagt: "Mann, es wäre besser, wenn Sie den Code teilen, und die Trennungsregeln sind unter dem Schnitt."
ORM sagt: "pss, Mann, ich habe gerade einen Weg gefunden, zwei verschiedene Ideologien miteinander in Einklang zu bringen - OOP und DB."
Hier ist alles klar.
Ich spreche von Dingen, die ein Höchstmaß an Abstraktion beinhalten. Ein Beispiel:
"Mediator":
Menschen, wenn Sie viele verschiedene Objekte haben, machen Sie ein zentrales, verbinden Sie alles andere damit.
Der Programmierer wird nur seltsam in seine Richtung aussehen, wenn er kontaktfreudig ist, wird er "Danke, Mütze!" Sagen, und für die Augen wird er nichts weiter als "Kapitän Beweise" nennen.
Gleiches gilt für die anderen Muster:
"Fabrik":
Leute, wussten Sie, dass Sie Objekte mit einer anderen Klasse konstruieren können?
"Data Mapper":
Warum verwenden Sie keine zusätzliche Abstraktionsebene, um Daten zu speichern?
"Beobachter":
Mann, aber lass uns ein paar Schnittstellen bekommen?
"Strategie":
Wissen Sie, was Polymorphismus ist?
Und vor allem SOLID:
S (Einzelverantwortung):
Ein Modul sollte nur eine Aufgabe ausführen, vergessen Sie es nicht!
I (Schnittstellentrennung):
Verwenden Sie unterschiedliche Schnittstellen für unterschiedliche Operationen!
Gut und so weiter.
Ich führe zu der Tatsache, dass der Hauptanwendungsbereich von Mustern überhaupt nicht darin besteht, sich an guten Code zu gewöhnen. Muster werden benötigt, um ein Programm zu diskutieren, das bereits von jemandem geschrieben wurde, um guten Code zu formalisieren. Damit Sie sagen können ("Wofür ist diese Klasse?" - "Ah, das ist ein Teil des Vermittlers"). Aber nicht, um seine Schriften mit den Uml-Mustern des Krampfanfalls zu überprüfen: „Aah, welches Muster soll in diesem Fall angewendet werden?“.
Ein Programmierer, der ein Konzept fließend beherrscht (z. B. das oben Gesagte), schreibt selbst Code unter Verwendung von Best Practices, selbst wenn er kein Wort darüber gehört hat. Dieselben Best Practices sind erforderlich, um die Beziehung seines Teams zu formalisieren, die zu seinem Code führt - und der Inbegriff hier ist natürlich GRASP.
Was ich unerfahrenen Programmierern sagen möchte:
- Lerne Konzepte, keine Muster. Konzepte sind wirklich wichtig.
- Wenn Sie plötzlich zur Besinnung kommen, dass Sie die Muster nicht kennen, geraten Sie nicht in Panik. Dies ist nur für den Personalvermittler von Bedeutung, nicht jedoch für Ihren Code und Ihren guten Stil.
Was ich dem Guru von Habr sagen möchte:
- Ich kann mich irren. Im Ernst.
- Ich verstehe, dass die Idee alltäglich ist. Trotzdem stoße ich aus irgendeinem Grund oft auf einen ähnlichen Ansatz für Anfänger.
- Aufgrund von Absatz 2 wurde möglicherweise bereits ein ähnlicher Artikel vor mir geschrieben. Ich weiß nicht.
Und schließlich: Der Artikel ist natürlich subjektiv, ich rufe niemanden für irgendetwas an (um mit Fabriken zu kämpfen). Das ist nur meine Meinung :)
Außerdem bin ich erst ein Junior, aber dieser Ansatz - Einzelheiten zu sehr zu beachten - hat mich immer in die Irre geführt.
Einen schönen Tag noch!