Heutzutage kann man für nahezu jede Sprache einen Rahmen finden, der für nahezu jedes Projekt geeignet ist. Die meisten modernen Frameworks sind relativ robust (im Allgemeinen), mit stundenlangen Tests, von Experten geprüftem Code und einer hervorragenden Erweiterbarkeit.
Ich denke jedoch, dass JEDES Framework einen Nachteil hat, wenn Programmierer als Community so stark von ihren gewählten Frameworks abhängig werden, dass sie die zugrunde liegenden Funktionen nicht mehr verstehen oder im Fall von neueren Programmierern die zugrunde liegenden Funktionen niemals erlernen anfangen mit. Es ist leicht, sich so zu spezialisieren, dass Sie (zum Beispiel) nicht länger ein PHP-Programmierer sind, sondern ein "Drupal-Programmierer", unter Ausschluss von allem anderen.
Wen interessiert es, richtig? Wir haben den Rahmen! Wir müssen nicht wissen, wie man es von Hand macht! Richtig?
Der Verlust grundlegender Fähigkeiten (manchmal in dem Maße, in dem Programmierer, die keine Frameworks verwenden, als "veraltet" eingestuft werden) hat zur Folge, dass es gängige Praxis ist, ein Framework zu verwenden, das nicht erforderlich oder angemessen ist. Die Funktionen, die das Framework ermöglicht, werden mit den Fähigkeiten der Basissprache verwechselt. Entwickler beginnen damit, Frameworks zu verwenden, um die grundlegendsten Aufgaben zu erledigen. Was früher als rudimentärer Prozess galt, umfasst jetzt große Bibliotheken mit ihren eigenen Macken, Fehlern und Abhängigkeiten. Was früher in 20 Zeilen ausgeführt wurde, wird jetzt durch Einfügen eines Frameworks mit 20.000 Zeilen UND Schreiben von 20 Zeilen zur Verwendung des Frameworks erreicht.
Umgekehrt will man das Rad nicht neu erfinden. Wenn ich Code schreibe, um eine grundlegende, allgemeine kleine Aufgabe zu erledigen, habe ich möglicherweise das Gefühl, dass ich meine Zeit vergeude, wenn ich weiß, dass das Framework XYZ alle Funktionen bietet, nach denen ich Ausschau halte, und vieles mehr. Der "ganz viel mehr" Teil hat mich immer noch beunruhigt, aber es scheint, dass viele nicht einmal mehr darüber nachdenken.
Es muss eine gute Metrik geben, um zu bestimmen, wann es angemessen ist, ein Framework zu verwenden. Wie schätzen Sie den Schwellenwert ein, wie entscheiden Sie , wann Sie ein Framework verwenden, oder wann nicht.
quelle
Antworten:
Nicht wirklich. Wenn es gute Metriken gäbe, um den angemessenen Einsatz einer Technologie zu bestimmen, würden Sie keine Sprache, keinen Editor und keine Methodik für Holy Wars sehen.
Die Gruppen, mit denen ich zusammengearbeitet habe, machen dasselbe - schätzen Sie Kosten und Nutzen, wählen Sie den produktivsten Weg und hoffen Sie, dass sie Recht haben. Es ist nicht besonders wissenschaftlich - ein Teil Intuition, drei Teile Erfahrung, ein Teil Anfälligkeit für Marketing, ein Teil List und fünf Teile Meinung.
quelle
Frameworks sind nur Werkzeuge. Ich denke nicht, dass es ein Fehler des Frameworks ist, wenn es überbeansprucht wird, sondern der Person, die es überbeansprucht. Das alte Sprichwort "Wenn Sie einen Hammer haben, sieht alles wie ein Nagel aus" zeigt, dass diese Denkweise schon lange existiert, bevor es überhaupt Computer gab.
Zu spezialisiert zu werden, kann langfristig zu einem Problem werden - sowohl für Entwickler als auch für biologische Arten. Um langfristig zu überleben, muss man die Anstrengungen sorgfältig abwägen, um seine Fähigkeiten in mehreren Bereichen zu entwickeln.
Um Ihre spezifische Frage zu beantworten, gibt es meiner Meinung nach keine Metrik dafür. Ich bevorzuge die Verwendung eines Frameworks, wenn es die Problemlösung vereinfacht. Wenn mir die Verwendung eines Frameworks hilft, ein Problem mit 2 anstatt 20 Codezeilen zu lösen, werde ich es natürlich verwenden. Aber selbst wenn es 20 Zeilen gegen 20 sind, könnte ich mich für ein Framework entscheiden, wenn es mir bessere Abstraktionen gibt, näher an der Problemdomäne, wodurch der Code einfacher zu verstehen und zu warten ist.
quelle
Ich denke, dass Frameworks in einigen Kontexten möglicherweise überlastet sind, ja. Ein Framework ist nur ein Werkzeug, ja. Ein Framework ermöglicht es Ihnen, etwas sehr schnell zum Laufen zu bringen, und ist daher ein hervorragendes Werkzeug für das Prototyping.
Irgendwann, wenn Ihre Anwendung ein gewisses Maß an Komplexität erreicht, scheinen mir die Einschränkungen, die einem Framework innewohnen, das weitere Wachstum zu hemmen. Der Trick besteht darin, zu erkennen, wann Sie auf einen solchen Wendepunkt gestoßen sind, und dann zu entscheiden, was Sie dagegen tun werden.
quelle
Ich arbeite meistens mit Webanwendungen, und obwohl ich versuche, allgemein zu sein, trifft meine Antwort möglicherweise nicht auf Ihren Programmierbereich zu.
Ich werde auch "framework" synonym mit "library" verwenden.
Vor der Implementierung eines Frameworks müssen einige Dinge beachtet werden, hier einige allgemeine Beispiele.
# 1. Spart das Framework Zeit und Mühe?
Die Antwort auf diese Frage lautet fast immer ja . Frameworks werden in der Regel erstellt, um bestimmte Probleme zu lösen und sie sehr gut zu lösen . Frameworks wie EntityFramework können Sie beispielsweise vollständig vom Schreiben von SQL-Code abhalten . Was fantastisch sein kann, wenn Ihr Programmierteam kein fließendes SQL beherrscht.
Frameworks wurden erstellt, um entweder a) eine programmiererfreundliche Schnittstelle zu ansonsten komplexen Komponenten hinzuzufügen oder b) bereits bekannten (oder etablierten) Komponenten eine Abstraktion hinzuzufügen.
Letzteres (oder in einigen Fällen sogar Ersteres) kann der Entwicklung tatsächlich im Wege stehen . Dies gilt insbesondere dann, wenn Sie oder Ihr Programmierteam ein neues Framework implementieren, in dem sie noch nie zuvor gearbeitet haben.
Dies kann möglicherweise den Entwicklungsprozess verlangsamen, was möglicherweise kostspielig sein kann.
# 2 Der Umfang Ihrer Bewerbung
Es heißt, "alles , was es wert ist, getan zu werden, ist es wert, übertrieben zu werden" , aber normalerweise ist das nicht der Fall. Es gibt wahrscheinlich keinen guten Grund, ein übergroßes Framework zu implementieren, wenn der Sinn Ihrer Anwendung darin besteht, "Kartoffel" zu drucken .
Wenn Sie eine Anwendung entwickeln (sei es eine Web-, Desktop-, Mobil- oder eine andere denkbare Art von Anwendung) - wenn Sie der Meinung sind, dass die Größe Ihres Frameworks Ihre (möglicherweise zukünftige) Implementierung beeinträchtigt, ist dies möglicherweise eine große Herausforderung Warnsignal, dass Ihr Framework Ihre Anwendung möglicherweise nur aufbläht. Eine gute Anekdote wäre, wenn Sie jQuery einbinden, nur um Ihrem Body-Tag eine "geladene" Klasse hinzuzufügen, wenn das Dokument fertig ist. Dies nur mit nativem JavaScript zu tun, mag ein bisschen schwieriger sein , aber Ihre Anwendung wird dadurch nicht aufgebläht.
Auf der anderen Seite, wenn ein Framework eine Menge Dirty Work im Inneren ausführt (dh Datenbank-Frameworks), ist es möglicherweise sinnvoll, es zu implementieren, auch wenn Sie das Framework nur "teilweise" verwenden. Eine gute Anekdote wäre, nicht zu versuchen, einen eigenen ADO.NET- oder MongoDB-Treiber zu erstellen, nur weil Sie nicht die gesamte Bibliothek nutzen müssen.
Manchmal kommen Frameworks als Open Source (und mit 'do-whatever-you-want'-Lizenzen). Dies eröffnet eine neue Möglichkeit, bei der sich ein Programmierteam möglicherweise nur für Teile eines Frameworks entscheidet.
Dies knüpft letztendlich an Frage 1 und 3 an.
# 3 Auswirkungen.
Manchmal wirkt sich die Implementierung eines Frameworks direkt auf den Endbenutzer aus. Dies gilt insbesondere für Webanwendungen, da große clientseitige Frameworks die Benutzererfahrung negativ beeinflussen können. Benutzer mit langsameren Computern können langsames Rendern, Leistungsprobleme mit Javascript oder ähnliche Probleme, die durch untergeordnete Computer verursacht werden, feststellen. Benutzer mit langsamen Verbindungen können langsame (zumindest anfängliche) Ladezeiten haben.
Auch in anderen Anwendungsarten können Endbenutzer von Ihren Anwendungsabhängigkeiten beeinträchtigt werden. Frameworks zumindest immer nehmen etwas Speicherplatz, und wenn Sie eine mobile App (oder sogar eine Desktop - Anwendung) entwickeln könnte dies erforderlich werden , um in Betracht gezogen werden.
Serverseitige Frameworks (noch webspezifischer) wirken sich höchstwahrscheinlich nicht auf Ihre Endbenutzer aus, wirken sich jedoch auf Ihre Infrastruktur aus . Einige Frameworks weisen Abhängigkeiten auf , die möglicherweise einen Neustart des Webservers erfordern, entweder nur des Dienstes oder des gesamten Servers.
Einige Frameworks sind möglicherweise auch sehr ressourcenintensiv.
Dies knüpft natürlich an Punkt 1 und 2 an.
Es ist alles nur ein großer "Kreis von Überlegungen", und es gibt keine wirkliche wissenschaftliche Methode, um zu entscheiden, ob Sie ein Framework implementieren sollten oder nicht.
Corbin March hat es sehr gut zusammengefasst:
Es ist auch wichtig, nicht elitär zu sein . Frameworks sind Werkzeuge, die verwendet werden sollen. Ich kenne Menschen beider Extreme. Auf der einen Seite macht sich der Typ das Leben schwer, auf der anderen Seite der Typ, der langsame, aufgeblähte Anwendungen erstellt.
Alle Frameworks haben Use-Cases, es geht nur darum, sie für die richtigen Zwecke zu implementieren.
quelle
Kennen die anderen Entwickler das Framework?
Wenn alle Entwickler mit Framework X vertraut sind und alle anderen Gründe für die Verwendung des Frameworks gegeben sind, sollten Sie sich dafür entscheiden! Für mich macht es keinen Sinn, das Erlernen eines bestimmten Frameworks zu erzwingen, wenn der Großteil der Entwicklungszeit für das Erlernen der Feinheiten des Frameworks aufgewendet wird.
In Bezug auf Ihre Aussage zu neueren Programmierern, die die Grundlagen nicht kennen, sind Sie viel mitfühlender als ich! Ja, es ist eine Schande, aber werde ich meine Zeit damit verbringen, mir Sorgen über die Unfähigkeit eines anderen zu machen? Nup. (Ausgehend von der Annahme, dass diese neuen Mitglieder der Community nicht sofort mit Ihnen zusammenarbeiten.)
quelle
Ich würde ein Framework verwenden, wenn (und NUR wenn) die folgenden Bedingungen zutreffen:
Das Framework dürfte noch einige Zeit unterstützt werden. Ich hatte sie schon einmal am Ende meines Lebens und es ist WIRKLICH ärgerlich. Vor allem, wenn Sie 9 Monate in Ihrem Projekt sind und ein Wechsel nicht mehr in Frage kommt. Und wenn das Framework BEREITS nicht mehr unterstützt wird, überlegen Sie dreimal, bevor Sie mit diesem Framework etwas Neues schreiben. Egal wie gut du es schon kennst.
Das Projekt passt tatsächlich zum Framework. Haben Sie als ein ziemlich altes Beispiel die Dinge gesehen, für die MFC gemacht wurde? Die Leute haben viele seltsame Dinge getan, damit es für Arten von Apps funktioniert, für die es einfach keinen Sinn ergab. Normalerweise verbringen sie mehr Zeit mit MFC als mit dem Schreiben der gewünschten App.
Das Projektteam ist in der Lage, im Rahmen zu arbeiten. Einige Leute nehmen sich nicht die Zeit, um zu verstehen, wie eine App in einem bestimmten Framework geschrieben werden sollte, und schreiben stattdessen Dinge so, wie sie es normalerweise tun, anstatt so, wie es das Framework benötigt. Diese Fehlanpassung von Code und Framework kostet normalerweise jeden viel Zeit und Mühe.
quelle