Würdest du deine App umgestalten oder dich darauf konzentrieren, zuerst die App fertigzustellen? Refactoring bedeutet, dass der Fortschritt der App App verlangsamt wird.
Wenn Sie die App fertigstellen, erhalten Sie später möglicherweise eine sehr schwer zu wartende App?
Die App ist ein persönliches Projekt. Ich weiß nicht wirklich, wie ich antworten soll: "Was treibt die Funktionalität und das Design an?" Ich mag minimal einfach zu bedienende Software auch. Daher entferne ich einige Funktionen und füge einige hinzu, von denen ich glaube, dass sie helfen werden.
programming-practices
refactoring
Jiew Meng
quelle
quelle
Antworten:
Bring es zum Laufen. Dann mach es schnell. Mach es endlich schön.
Wenn Sie eine gute Trennung zwischen Ihrem Code (Präsentations-, Geschäfts- und Datenebene) mithilfe von Schnittstellen haben und es sich nicht um ein monolithisches Design handelt, sollte das Refactoring nicht so schwierig sein.
Wenn Sie so viele Schwierigkeiten beim Refactoring haben, ist das wahrscheinlich ein Codegeruch - ich schlage vor, Sie schauen sich Solid Principles an
quelle
Ich denke, der wesentliche Punkt ist, die Schnittstellen sauber zu halten . Sie können Module / Klassen / beliebige Implementierungen später immer umgestalten oder sogar umschreiben, solange die Kommunikationsebenen zwischen ihnen vernünftig sind. Nehmen Sie sich etwas Zeit, um herauszufinden, was später leicht zu ändern ist und was nicht. Machen Sie letzteres richtig.
Dies steht im Einklang mit dem Geist von TDD. Um gute Tests schreiben zu können, benötigen Sie eine gute Schnittstelle zum Testen. Wie chaotisch es im Moment hinter den Kulissen ist, ist nicht so wichtig, weil Sie es später verbessern können.
quelle
Ich überarbeite immer, wenn ich gehe, besonders mit TDD.
Schreiben Sie die Tests
Machen Sie die Tests erfolgreich
Refactor
Auf diese Weise haben Sie weniger Fehler und einen besseren Code für das fertige Produkt. Außerdem haben Sie weniger Code zum Verwalten, wenn Sie fertig sind.
quelle
Refactor früh und oft! Die Zeit, die Sie "einsparen", um es nicht zu tun, wird oft damit verbracht, das nächste Feature zu hacken und nach Fehlern in übermäßig komplexem oder chaotischem Code zu suchen.
quelle
Refactoring ist wie das Abholen Ihres Zimmers.
Wenn Sie für Ordnung sorgen, haben Sie einen linearen Overhead, der proportional zu der Menge an produktiver Arbeit ist, die Sie in algorithmologischen Begriffen am Code O (n) ausführen. Angenommen, Sie verbringen 10% Ihrer Zeit mit Umgestalten (oder Aufräumen), dann sind 10% eine Selbstverständlichkeit und bleiben über die Zeit konstant.
Wenn Sie jedoch Ihre schmutzigen Sachen in eine Ecke werfen und weitermachen, wird die Zeit, die Sie für die Abholung Ihres Zimmers benötigen, immer länger, je komplexer das Chaos wird. Angenommen, jedes einzelne Stück schmutziger Wäsche trägt exponentiell zur erforderlichen Reinigungszeit bei, befinden Sie sich jetzt in einer O (e n ) -Situation.
Jeder, der sich jemals mit dem Konzept der algorithmischen Komplexität befasst hat, wird feststellen, dass es irgendwo eine Gewinnschwelle gibt, das heißt, dass sich eine optimale Menge an Schmutzwäsche ansammelt. Wie viel das ist, hängt von den konstanten Faktoren ab, die in der Big-O-Notation verworfen werden. Ein weiterer Faktor ist der Wert Ihrer Arbeit im Laufe der Zeit: Wenn Ihre Arbeit jetzt viel wert ist, aber in der nächsten Woche günstig (dh es gibt eine Frist für diesen Freitag für dieses Projekt und drei weitere, aber danach sind Sie meistens untätig ) könnte sich die Gleichung zugunsten eines Nicht-Refactorings herausstellen.
Und dann ist da noch die kritische Masse der Komplexität. Irgendwann wird das Durcheinander (wenn Sie so wollen, "kritisches Durcheinander") so schlimm, dass es einfacher zu sein scheint, den gesamten Raum niederzubrennen und neue Kleidung zu kaufen. In der Realität ist dies normalerweise nicht der Fall, aber es scheint so zu sein, und psychologische Effekte werden es zehnmal schwieriger machen, die Sache anzugehen.
Und natürlich haben Sie nur eine begrenzte Auswahl, wenn Sie in ein Projekt eintreten, das bereits ein riesiges, mehrfach redundantes Durcheinander darstellt.
TL; DR: Im Zweifelsfall Refactor. Sie sollten wirklich gute Beweise haben, bevor Sie sich dagegen entscheiden.
quelle
Wenn Sie die Möglichkeit haben, Funktionen hinzuzufügen oder Fehler zu beseitigen, um Ihren Umsatz / Ihre Kundenzufriedenheit dort zu erreichen, wo Sie es für richtig halten, tun Sie es. Sobald es weniger neue Anforderungen gibt, können Sie mit dem Refactoring ausgleichen. Irgendwann müssen Sie sicherstellen, dass Sie den gewünschten Code schreiben. Wenn alle Dinge gleich sind, würde ich lieber 100 Stunden Code wegwerfen als 1000. Was Sie tun, wenn niemand es will.
quelle
Kommt wirklich drauf an wo du bist!
Andere Dinge, über die man nachdenken sollte:
Wie sicher sind Sie, dass Sie wirklich das richtige funktionale Design haben? Könnten Sie am Ende noch einmal umgestalten, nachdem Sie ein Feedback von den Benutzern erhalten haben?
Ich würde lieber veröffentlichen als umschreiben. Optimieren Sie, nachdem Sie sicher sind, dass Sie das funktionale Design gefunden haben.
quelle
Solange Sie sicher sind, dass Sie die Frist einhalten können, können Sie alles umgestalten, was Sie wollen. Aber selbst wenn es ein bisschen Unsicherheit gibt, sollte man besser an der Entwicklung festhalten und nur in bescheidenen Schritten refaktorieren.
quelle
Wenn das schlechte Design, das Sie umgestalten möchten, Ihnen wirklich weh tut, beheben Sie es jetzt besser, als mehr Code zu erstellen, der davon abhängt. Ein späteres Refactoring wäre schwieriger und teurer. Sie werden es wahrscheinlich nicht mehr schaffen.
Auf der anderen Seite, wenn Ihr einziges Problem die Hässlichkeit ist, möchten Sie vielleicht zuerst Ihre Software vervollständigen, da kaum etwas besser ist , als Dinge zu erledigen .
quelle
Refactoring ist sehr wichtig, wenn Sie an der Fertigstellung Ihrer Bewerbung arbeiten.
+ VES
Clear Flow: Refactoring bietet Klarheit über den Code, da manchmal, wenn der Code wenig unstrukturiert ist, der Codefluss nach einer bestimmten Zeit schwierig wird und Refactoring-Code zu einer schwierigen Aufgabe wird und Fehler auftreten können.
Verbessern der Leistung: Die ordnungsgemäße Umgestaltung der Anwendung trägt definitiv zur Verbesserung der Anwendungsleistung bei.
Wartung: Last but not least wäre es auf lange Sicht einfacher zu warten.
-VE
Endeffekt
Je nach Projekttyp können Sie Prioritäten für die Codequalität oder den Abschluss festlegen, je nachdem, was für die aktuelle Situation erforderlich ist.
quelle
Aufgrund meiner persönlichen Erfahrung beende ich die Apps in der Regel zuerst mit der Bedingung, dass eine Frist zu erreichen ist. Sobald Sie fertig sind, können Sie es umgestalten.
Beende es und überarbeite es. Aber wenn es keine Frist für Eile oder Zeit gibt, schlage ich eine Umgestaltung vor, die gut wäre.
quelle