Die Perspektive, die Sie haben, kann durch persönliche Erfahrung verzerrt werden. Dies ist eine schlüpfrige Anhäufung von Fakten, die individuell korrekt sind, die sich daraus ergebende Folgerung jedoch nicht, obwohl sie auf den ersten Blick korrekt aussieht.
- Frameworks sind umfangreicher als kleine Projekte.
- Schlechte Praktiken sind in größeren Codebasen bedeutend schwerer zu handhaben.
- Das Erstellen eines Frameworks erfordert (im Durchschnitt) einen erfahreneren Entwickler als das Erstellen eines kleinen Projekts.
- Bessere Entwickler befolgen bewährte Verfahren (SOLID) mehr.
- Infolgedessen besteht bei Frameworks ein höherer Bedarf an bewährten Verfahren, und sie werden in der Regel von Entwicklern erstellt, die mit bewährten Verfahren besser vertraut sind.
Dies bedeutet, dass bei der Interaktion mit Frameworks und kleineren Bibliotheken der Code für bewährte Verfahren, mit dem Sie interagieren, häufiger in den größeren Frameworks enthalten ist.
Dieser Irrtum ist sehr verbreitet, z. B. war jeder Arzt, von dem ich behandelt wurde, arrogant. Daraus schließe ich, dass alle Ärzte arrogant sind. Diese Irrtümer leiden immer unter einer pauschalen Folgerung, die auf persönlichen Erfahrungen beruht.
In Ihrem Fall ist es möglich, dass Sie vorwiegend in größeren Frameworks und nicht in kleineren Bibliotheken gute Praxiserfahrungen gemacht haben. Ihre persönliche Beobachtung ist nicht falsch, aber es ist ein Einzelfall und nicht universell anwendbar.
2 Programmiermodi - mehr oder weniger genau das erstellen, was über Anforderungen und KISS (typische Programmierung) verlangt wird, oder sehr generische und wiederverwendbare Logik, Dienste usw. erstellen, die die Flexibilität bieten, die andere Entwickler benötigen (Rahmenprogrammierung)
Das bestätigen Sie hier ein wenig. Überlegen Sie, was ein Framework ist. Es ist keine Anwendung. Es ist eine verallgemeinerte "Vorlage", mit der andere alle Arten von Anwendungen erstellen können. Logischerweise bedeutet dies, dass ein Framework in einer viel abstrakteren Logik aufgebaut ist, um von allen genutzt werden zu können.
Framework-Builder sind nicht in der Lage, Verknüpfungen zu verwenden, da sie nicht einmal die Anforderungen der nachfolgenden Anwendungen kennen. Durch das Erstellen eines Frameworks werden sie dazu angeregt, ihren Code für andere nutzbar zu machen.
Anwendungsentwickler können jedoch Kompromisse bei der logischen Effizienz eingehen, da sie sich auf die Bereitstellung eines Produkts konzentrieren. Ihr Hauptziel ist nicht die Funktionsweise des Codes, sondern die Erfahrung des Benutzers.
Bei einem Framework ist der Endbenutzer ein anderer Entwickler, der mit Ihrem Code interagiert. Die Qualität Ihres Codes ist für Ihren Endbenutzer von Bedeutung.
Bei einer Anwendung ist der Endbenutzer kein Entwickler, der nicht mit Ihrem Code interagiert. Die Qualität Ihres Codes spielt für sie keine Rolle.
Genau aus diesem Grund setzen die Architekten eines Entwicklungsteams häufig bewährte Praktiken durch. Sie sind nur einen Schritt von der Bereitstellung des Produkts entfernt, was bedeutet, dass sie dazu tendieren, den Code objektiv zu betrachten, anstatt sich auf die Bereitstellung der Anwendung selbst zu konzentrieren.
Wenn Sie diese Einstiegspunkte der Abstraktion hinzufügen, erfüllen Sie wirklich die Benutzeranforderungen oder erstellen Sie ein Framework auf der Grundlage Ihres vorhandenen Frameworks und des Tech-Stacks, um zukünftige Erweiterungen zu vereinfachen? In welchem Fall dienen Sie den Interessen des Kunden oder des Entwicklers?
Dies ist ein interessanter Punkt, und meiner Erfahrung nach ist dies der Hauptgrund, warum die Menschen immer noch versuchen, das Vermeiden bewährter Praktiken zu rechtfertigen.
Um die folgenden Punkte zusammenzufassen: Das Überspringen bewährter Verfahren kann nur gerechtfertigt werden, wenn Ihre Anforderungen (wie derzeit bekannt) unveränderlich sind und die Codebasis niemals geändert oder ergänzt wird. Spoiler Alarm: Das ist selten der Fall.
Wenn ich beispielsweise eine 5-minütige Konsolenanwendung schreibe, um eine bestimmte Datei zu verarbeiten, verwende ich keine bewährten Methoden. Da ich die Anwendung heute nur noch verwenden werde und sie in Zukunft nicht mehr aktualisiert werden muss (es wäre einfacher, eine andere Anwendung zu schreiben, wenn ich eine weitere benötige).
Angenommen, Sie können eine Anwendung in 4 Wochen problemlos und in 6 Wochen ordnungsgemäß erstellen. Auf den ersten Blick scheint es besser zu sein, schlampig zu bauen. Der Kunde erhält seine Bewerbung schneller und das Unternehmen muss weniger Zeit für Entwicklergehälter aufwenden. Win / win, richtig?
Dies ist jedoch eine Entscheidung, die ohne Vorausdenken getroffen wird. Aufgrund der Qualität der Codebasis dauert es 2 Wochen, eine größere Änderung an der fehlerfrei erstellten Codebasis vorzunehmen, während die gleichen Änderungen an der ordnungsgemäß erstellten Codebasis 1 Woche dauern. Möglicherweise werden sich in Zukunft viele dieser Änderungen ergeben.
Darüber hinaus besteht die Tendenz, dass Änderungen unerwartet mehr Arbeit erfordern, als Sie anfangs in schlecht gebauten Codebasen dachten, wodurch sich Ihre Entwicklungszeit wahrscheinlich auf drei statt auf zwei Wochen erhöht.
Und dann gibt es auch die Tendenz, Zeit für die Suche nach Fehlern zu verschwenden. Dies ist häufig bei Projekten der Fall, bei denen die Protokollierung aus Zeitgründen oder weil Sie nicht gewillt sind, sie zu implementieren, ignoriert wurde, weil Sie abwesend unter der Annahme arbeiten, dass das Endprodukt wie erwartet funktioniert.
Es muss nicht einmal ein großes Update sein. Bei meinem jetzigen Arbeitgeber habe ich mehrere Projekte gesehen, die schnell und schmutzig erstellt wurden, und als der kleinste Fehler / die kleinste Änderung aufgrund einer fehlerhaften Kommunikation in den Anforderungen vorgenommen werden musste, führte dies zu einer Kettenreaktion, die es erforderlich machte, Modul für Modul umzugestalten . Einige dieser Projekte scheiterten (und hinterließen ein unhaltbares Durcheinander), bevor sie überhaupt ihre erste Version veröffentlichten.
Verknüpfungsentscheidungen (schnelle und unsaubere Programmierung) sind nur dann von Vorteil, wenn Sie endgültig garantieren können, dass die Anforderungen genau richtig sind und sich niemals ändern müssen. Nach meiner Erfahrung bin ich noch nie auf ein Projekt gestoßen, bei dem dies zutrifft.
Die zusätzliche Zeit in bewährte Verfahren zu investieren, bedeutet, in die Zukunft zu investieren. Zukünftige Fehler und Änderungen werden so viel einfacher, wenn die vorhandene Codebasis auf bewährten Methoden aufbaut. Es zahlt sich bereits nach zwei oder drei Änderungen aus.