Ich plane, an einigen persönlichen Projekten zu arbeiten / zu beginnen, die als meine tägliche Arbeit enden könnten. Ich überlegte, wie ich anfangen sollte.
Nur ein Prototyp - schreiben Sie nur funktionierenden Basiscode, der mir eine Menge Zeit kosten könnte, um die Erweiterung zu vereinfachen und sie zu optimieren und umzugestalten.
Schreiben Sie von Anfang an sauberen, optimierten und dokumentierten Code, und denken Sie daran, dass er gelöscht wird, wenn er nach einiger Zeit nicht mehr wirtschaftlich ist.
Update: Die Kombination von YAGNI mit Sunpech- und M.Sameer-Antworten macht für mich vollkommen Sinn :) Vielen Dank an alle für die Hilfe.
code-quality
prototyping
JackLeo
quelle
quelle
Antworten:
Es gibt eine dritte Option: Schreiben Sie sauberen Code über eine testgetriebene Entwicklung, um die Anforderungen zu implementieren, die heute von YAGNI benötigt werden.
Die Versuchung, Code schreiben , die nicht notwendig ist im Moment aber vielleicht in der Zukunft weist mehrere Nachteile auf seine ... von Ihnen nicht erlaubt ist es Gonna brauchen :
Aus diesem Grund sollten Sie nicht nur Prototypen erstellen, sondern auch von Anfang an sauberen, optimierten und dokumentierten Code schreiben. Dabei sollten Sie berücksichtigen, dass dieser Code entfällt, wenn er nach einiger Zeit nicht mehr wirtschaftlich ist.
Schreiben Sie den Code, den Sie jetzt benötigen, und stellen Sie sicher, dass Sie die Anforderungen von heute und morgen optimal erfüllen können.
quelle
wie gewöhnlich...
Es hängt davon ab, ob
Wenn Sie einen Prototyp erstellen, um ein Risiko zu minimieren oder ein unbekanntes Problem aufzudecken, codieren Sie es einfach und erwarten Sie, dass Sie es entsorgen, wenn Sie fertig sind
Wenn Sie Prototypen für iterative Verfeinerungen erstellen, codieren Sie sie einfach und erwarten Sie, dass Sie sie häufig modifizieren und umgestalten
Wenn Sie anfangen, das eigentliche Produkt zu schreiben , es aber als Prototyping bezeichnen, um faul zu sein , dann seien Sie nicht faul und schreiben Sie es beim ersten Mal gut
quelle
Warum denken Sie beim Prototyping über sauberen Code nach? Die eigentliche Idee des Prototyping ist, dass es ein Konzept oder eine Idee beweisen und danach weggeworfen werden soll.
Ich werde mit den meisten hier nicht einverstanden sein, indem ich sage, wenn Sie bereits über die Wahl nachdenken, ob Sie sauberen Code schreiben oder schnell etwas für das Prototyping erledigen möchten, wählen Sie Letzteres. Vor allem, wenn es um frühe Entwicklungsphasen geht. Ich sage nicht, schreibe niemals sauberen Code, ich sage, bring die Idee raus, sorge dafür, dass es die Richtung ist, in die es gehen soll, und dann gehe zurück, säubere es - Refactor.
Als Softwareentwickler sind wir beim ersten Mal so sehr damit beschäftigt, Dinge richtig zu machen und zu säubern, dass wir nicht erkennen, dass es sich nicht um Code handelt, den wir liefern, sondern um eine Lösung für ein Problem .
Ich denke beim Codieren wie beim Schreiben eines Papiers:
Wenn wir eine Arbeit schreiben, fangen wir irgendwo an, skizzieren Ideen, Umrisse usw. Sie enthält nicht alle Details und sieht nicht vollständig aus - es handelt sich im Wesentlichen um einen ersten Entwurf, gefolgt von einem zweiten und so weiter. Vieles wird auf dem Weg zu einem verfeinerten und fertigen Papier umgeschrieben, ersetzt und / oder sogar entfernt. (Offensichtlich geht diese Analogie nicht so weit, zu sagen, dass Code jemals wirklich jemals fertig oder endgültig wie ein Papier ist.)
quelle
Es gibt zwei Arten von Prototypen:
Laut Capers Jones stellen evolutionäre Prototypen Endprodukte von geringer Qualität her, die viel mehr Aufwand und längere Zeit erfordern, um Stabilität zu erreichen.
Wenn Sie also über ein Prototyping nachdenken, damit der Kunde so schnell wie möglich etwas sehen kann, um eine bessere Vorstellung und genauere Angaben zu den Anforderungen zu erhalten, ist es besser, ein Einwegprototyp zu sein und die Entwicklung später mit sauberem Code durchführen zu lassen. Wenn Sie sich das nicht leisten können, schreiben Sie sauberen Code von Anfang an und pflegen Sie ihn sorgfältig, aber wie andere vorgeschlagen haben, optimieren Sie nicht übermäßig und fügen Sie keine Dinge hinzu, bis Sie sie benötigen.
quelle
Ich zögere es, schmutzige Codierungen aus irgendeinem Grund zu entschuldigen. Nach meiner Erfahrung haben Leute, die Quick & Dirty als Entschuldigung für das Prototyping beanspruchen, diese Einstellung gegenüber jedem Code, einschließlich der Produktion. Wenn jemand einen chaotischen Prototyp erstellt, erstellt er Chaos in einem beliebigen Code. Prototyping bedeutet nicht schmutzige Codierung, sondern vereinfachte Annahmen zum Testen der wichtigsten Anwendungsfälle. Der Code ist möglicherweise nicht formal getestet oder kümmert sich um alle Details, sollte aber dennoch gut gestaltet und gut implementiert sein. Sauberkeit ist ein Zeichen von Kompetenz, kompetente Programmierer empfinden natürlichen Ekel gegenüber unordentlichem Code, unabhängig von dessen Zweck.
quelle
Schreiben Sie von Anfang an sauberen, optimierten und dokumentierten Code. Ich bin nicht in der Lage, das selbst zu tun, und das ist ein echtes Problem. Ich bin kein Programmierer, aber ich habe für Softwareentwicklungsunternehmen in kundenorientierten Managementfunktionen gearbeitet, und da sie mir viele gute Ideen geben, baue ich gelegentlich einen Prototyp für etwas. Fast jedes Mal, wenn dieser Prototyp dann an einen Entwickler übergeben wurde, der ihn "aufräumte" und in ein Versandprodukt verwandelte. Wenn ich die Quelle auschecke, sind es immer noch 80-90% meines beschissenen Codes.
quelle
Ein Kollege von mir befürwortet enthusiastisch das wiederholte Prototyping mit der Einschränkung, dass man genug Disziplin haben muss, um jeden Prototyp wegzuwerfen und erneut von Grund auf neu zu schreiben Als nächstes schreibt man den gleichen Prototyp mehrmals in einem trivial anderen Stil. Er schlug halb ernsthaft vor, dass Sie, wenn Sie wirklich an einem brillanten Stück Code hängen, den Sie unmöglich verwerfen könnten, diesen ausdrucken, das Quellcodeverwaltungs-Repository löschen und den Ausdruck an sich selbst senden sollten - er wird verschwinden lang genug, dass es die nächste Iteration nicht infiltrieren kann.
quelle
Sie können jederzeit damit beginnen, es (überhaupt) zum Laufen zu bringen, es dann zu überarbeiten, um es sauber zu machen, und es dann schnell / klein zu machen, wenn es wirtschaftlich sinnvoll ist, dies zu tun. Ich würde mit ein paar Experimenten beginnen, die Sie wegwerfen, und sie dann wieder ins Leben rufen, wenn Sie wissen, was funktioniert.
quelle
Beide sind gut. Beides mag ich. Sie widersprechen sich nicht.
Ich mag Prototypen. Das Prototyping entwickelt meine Kreativität. Ich teste viele mögliche Lösungen. Wenn ich es schnell mache, habe ich die Möglichkeit, viele Möglichkeiten zur Problemlösung zu testen.
Ich schreibe gerne sauberen, gut getesteten Code. Es entwickelt meine Kernkompetenzen. Normalerweise wähle ich einen der Prototypen aus und verbessere ihn entweder oder schreibe ihn von Grund auf neu.
Sie sollten den Prototyp jedoch niemals mit dem Seriencode verwechseln. Prototyp sollte niemals in Produktion gehen. Es sollte immer als Prototyp gekennzeichnet sein. Machen Sie am besten alle Prototypen in Ihrer eigenen Branche.
quelle
Ich neige dazu zu sagen, dass Extreme fast immer schlecht sind.
Ich rate dazu, die Balance zwischen sauber, gut dokumentiert und Prototyping zu halten. Wenn Sie für eine Bibliothek oder Plattform entwickeln, haben Sie keine Erfahrung mit dem Prototyping. Das gilt besonders für den Anfang und für Plattformen, z. B. Android oder Container, die Sie in ihr Korsett stecken. Das heißt, Sie implementieren ihre Schnittstellen und sie rufen Sie an.
Nach meiner eigenen Erfahrung lebt der Großteil des Codes nicht sehr lange. Trotzdem können Sie schnell loslegen, indem Sie Ihre Funktion implementieren. Wenn Sie früher oder später (die meiste Zeit früher) Ihren vorhandenen Code überarbeiten / überarbeiten müssen, weil Sie mit der nächsten Funktion besonders komplizierte Teile aufräumen. Achten Sie auf ordnungsgemäße automatisierte Tests, um ein problemloses Refactoring zu ermöglichen. Zu den oben genannten Plattformen wie Android: Oft machen sie das automatisierte Testen aufgrund der engen Kopplung und des fehlenden Designs für die Testbarkeit nicht so einfach. Dann können Sie Ihre Testbasis auf ein höheres Niveau heben, z. B. Integrationstests.
Ich habe einen Artikel geschrieben, der einige Hinweise zum Starten geben könnte: https://medium.com/@ewaldbenes/start-lean-why-its-best-to-split-your-next-coding-project-by-feature-70019290036d
quelle