Frameworks - mehr Minuspunkte als Pluspunkte

Der Grund für diesen Artikel war eine weitere Veröffentlichung über Habré. Es heißt "Lernen Sie keine Frameworks, lernen Sie Architektur" und Sie können es hier lesen.

Ich werde sofort eine Reservierung vornehmen, damit ich mit dem Autor völlig einverstanden bin und nur meine "drei Pfennige" hinzufügen möchte. Zuerst habe ich darüber nachgedacht, es in den Kommentaren unter dem Artikel richtig zu machen, aber schnell gemerkt, dass der "Penny" ziemlich voluminös ist. Und so wurde dieser Text geboren.

Zuerst ein wenig über dich


Ich beschäftige mich seit dem 98. Jahr mit der Webentwicklung. Er arbeitete für die Firma und freiberuflich. Er rekrutierte Mannschaften. Sowohl im realen Leben als auch online. Die erste Programmiersprache war Perl, das inzwischen sicher verstorben ist, und ich bedaure immer noch seinen vorzeitigen Tod. Dann kam PHP. Etwas später begann Ruby und die Ära der Feuerwerke.

Große verspricht kleine Erfolge


Ich habe sie begeistert getroffen. In der Tat scheint ein Tool erschienen zu sein, das die Entwicklung erheblich erleichtern soll, was Ihnen viel Routine ersparen kann. Die Begeisterung ließ jedoch schnell nach. Und hier ist warum.

Ich weiß nicht, wer wie, aber ich hatte vor allem damit gerechnet, eine große Anzahl von monotonen Aktionen loszuwerden, die ich bei der Arbeit an jedem neuen Projekt ausführen musste. Entwerfen Sie das "Backbone" der Basis, schreiben Sie die Ausgabe im Wesentlichen derselben Textseiten usw. usw. Diejenigen, die eine ausreichende Anzahl von Sites geschrieben haben, werden diese Liste leicht mit vielen, vielen Punkten ergänzen. Und die meisten Feuerwerke sparen viel Routine. Aber zu welchem ​​Preis!

Und diesmal ... und diese beiden ...

Kontrast Fandorin
Meine erste Beschwerde betrifft RoR und Yii und Symfony und fast alle anderen, mit denen ich zu tun hatte - ihre Monstrosität und Tonnen von vollständig redundantem Code, die immer im Projekt enden. Ich bin es gewohnt, dass der Code über viele Jahre hinweg so sauber und prägnant wie möglich ist, dass die Anwendung so schnell wie möglich ausgeführt wird. Ich konnte dem Müll nicht zustimmen (entschuldigen Sie, ich kann nichts anderes sagen), der in Projekten gelandet ist.

Die zweite Behauptung ist ein Versuch aller, ausnahmslos Feuerwerksautoren, so etwas wie ihre Programmiersprache zu erfinden. Lassen Sie mich erklären, was ich meine. Nehmen Sie zum Beispiel die gängigste js jQuery-Bibliothek. Gleichzeitig werde ich gleich einen Vorbehalt machen, den ich für fast die einzigen nützlichen, kompetenten und vielen, vielen schmeichelhaften Epitheta halte. Ich gebe jq nur als Beispiel, weil sicher jeder verstehen wird, was ich meine. Und so können Sie auf das Element über die ID in nativen Js wie document.getElementById ("id") und jQuery $ ("# id") zugreifen. Die Tatsache, dass es ein Dutzend Zeichen weniger geschrieben wurde, ist nicht sehr beeindruckend. Gleichzeitig hat jq eine Reihe weiterer Vorteile, für die ich bereit bin, eine neue Syntax zu erlernen. Darüber hinaus ist es zuverlässig und steht fast nie in Konflikt mit anderen Bibliotheken. Was nicht gesagt werden kann, und ein Haufen ihrer Art, die voraussichtlich ersetzen werden.

Ich werde noch einmal reservieren - ich bin auf keinen Fall dagegen, etwas Neues zu lernen. Aber nur, wenn dieser neue Code meinen Code sauberer und schneller macht. Wenn ich etwas lernen muss, damit ich später Stellen vom Typ eines Affen nieten und es nicht wagen kann, einen Schritt nach links und einen Schritt nach rechts zu machen, weil ich einfach nicht wusste, wie - danke.

Ja, das Schlimmste ist, dass ein solcher Programmieransatz das Denken einfach erschöpft und wenn dieses neue, supercoole Framework versagt, und dies geschieht, glauben Sie mir, sobald der Client Sie nach etwas fragt, das zumindest geringfügig über den Rahmen hinausgeht, wehe dem Framework (was ich kürzlich herausgefunden habe) dass es jetzt so einen Beruf gibt) fällt in eine Dummheit und fängt an, in allen ihm zugänglichen Foren dumme Fragen zu stellen. Alles wird durch die Tatsache heruntergeladen, dass einer der Programmierer (kein Framework) eine Krücke dafür formt und der Kunde den Code nicht überprüft.

Und das sind drei ...

Er ist

All dies gilt nicht nur für die Vorderseite, sondern auch für die Rückseite. Infolgedessen stellt sich die Frage: Gleich zu Beginn erkannte ich, dass ich während einer Entwicklung viele unnötige Gesten ausführen muss, die ich optimieren möchte. Kann dies jedoch zu einem solchen Preis erfolgen? Außerdem gibt es noch einen weiteren Punkt, der zum größten Teil die Entwicklung in Ruby betrifft.

Um die grundlegendsten Funktionen einer Webanwendung zu implementieren, müssen Sie separate Gems verbinden. Sich auf die Datenbank stützen - mysql2, Mail senden - Mail oder Poni, die auf ihrer Basis erstellt wurden. Und so weiter und so fort. Auf den ersten Blick ist daran nichts auszusetzen - alle Edelsteine ​​in Ruby sind normalerweise gut getestet und es gibt keine Probleme damit. Es gibt aber auch Ausnahmen von dieser Regel. Zum Beispiel musste ich einmal in der Woche mit odf-report sitzen, der nicht richtig arbeiten wollte, und dann meine Klasse ausspucken und schreiben. Außerdem ist es etwas ärgerlich, dass sich mit der Verbindung jedes Edelsteins zwangsläufig die Seitenbildungszeit erhöht. An manchen Edelsteinen sehr leicht. Und nicht einige ... Versuchen Sie, mit dem bereits erwähnten Pony zu diesem Thema zu experimentieren - überzeugen Sie sich selbst.

Die ewige Frage


Und was machen? Einerseits ist die Entwicklung in einer „reinen“ Sprache definitiv keine Option, andererseits sind vorhandene Tools aus einer Reihe von Gründen nicht zufriedenstellend? Der Ausweg besteht darin, ein Tool zu erstellen, das die am häufigsten verwendeten Funktionen optimiert und gleichzeitig den Programmierer nicht behindert und ihm keinen Programmierstil auferlegt, den der Autor dieses Tools für den einzig richtigen hält. In der Praxis bedeutet dies, dass das Tool:

  1. enthalten einen minimalen Satz von Standard- und maximal optimierten Funktionen
  2. Das Tool sollte den Programmierer nicht zwingen, so etwas wie eine neue „Un-Sprache“ des Programmierens zu lernen, die das Gehirn vollständig deaktiviert
  3. und all dies sollte im Idealfall in eine Light-Bibliothek umgewandelt werden, die nicht versucht, hinsichtlich der Codemenge mit dem Betriebssystem zu konkurrieren.

Vielleicht irre ich mich, aber bisher hat mich niemand anders überzeugen können. Bereit, sich Meinungen anzuhören.

Source: https://habr.com/ru/post/de476424/


All Articles