Ich arbeite seit mehr als 2 Jahren an meinem Hobbyprojekt in C ++. Wann immer ich ein Modul / eine Funktion schreibe, codiere ich sie mit viel Nachdenken. Jetzt sehen Sie das Problem,
do {
--> write the code in module 'X' and test it
--> ... forget for sometime ...
--> revisit the same piece of code (due to some requirement)
--> feel that "This isn't written nicely; could have been better"
} while(true);
Hier 'X'
ist ein beliebiges Modul (sei es klein / groß / mittel). Ich beobachte, dass dies passiert, egal wie viel Aufwand ich beim Codieren aufbringe. Daher sehe ich meistens keinen funktionierenden Code. :)
Ist das für viele Menschen ein gemeinsames Gefühl? Handelt es sich um sprachspezifische Phänomene? (Weil man in C ++ dasselbe auf verschiedene Arten schreiben kann).
Was soll ich tun, wenn ich diese bekommen Refactoring für eine reale Weltproduktion Code Gefühl, wo der Arbeits Code ändern wird mich nicht viel Lob verdienen , sondern kann es Probleme einladen , wenn es fehlschlägt.
quelle
Antworten:
Dieses Phänomen ist sehr verbreitet und für Programmierer nicht spezifisch. Wann immer Sie eine intellektuelle Aufgabe ausführen, werden Sie Dutzende von Stellen bemerken, an denen Sie sich hätten verbessern können - nachdem Sie etwas Abstand gewonnen haben. Fragen Sie einen weisen (Frauen-) Mann, der jemals eine These verfasst hat, und er wird Ihnen eines sagen: "Sehen Sie es sich nicht an. Sie werden auf den ersten Blick einen Fehler finden."
Grundsätzlich gibt es zwei Dinge, um die Refactoring-Schleife zu vermeiden:
quelle
Kontinuierliches Refactoring ist der richtige Weg. Das Ändern des Arbeitscodes würde keine Probleme verursachen und sollte empfohlen werden, wenn dies ordnungsgemäß durchgeführt wird. Wenn Ihr Code vollständig Unit-getestet ist, können Sie Ihren Code mit Sicherheit neu faktorisieren.
Das Einzige, was Sie über den realen Produktionscode vorhersagen können, ist, dass sich WIRD ändern. Versuchen Sie nicht zu erraten, wie sich dies ändern wird und welche neuen Techniken Sie morgen lernen werden. Kurz gesagt, versuchen Sie nicht, Ihren Code "perfekt" zu machen. Mach es einfach so gut du kannst mit deinem gegenwärtigen Wissen. Stellen Sie außerdem sicher, dass Ihr Code gründlich getestet und erweiterbar ist.
Ich verbringe 20% -30% meiner Zeit damit, vorhandenen Code umzugestalten. Ich arbeite in einem Technologieunternehmen und das "Management" hat sich nie darüber beschwert, bestehenden Code zu ändern. Mir ist jedoch klar, dass dies in einigen Unternehmen ein Problem sein kann. Martin Fowler hat sogar einen Abschnitt in seinem Refactoring-Buch .
Zusammenfassend ist es ein allgemeines Gefühl in meiner Erfahrung, aber es ist kein negatives.
quelle
Jedes Modul / jede Funktion entsteht und entwickelt sich in einer Welt der Prioritäten. Wenn es ausreicht, um die Ziele der Außenwelt zu erreichen, bleibt es oft stagnieren. Es ist alles letztendlich ein Gerüst, das dem höheren Zweck dient. Ja, wir müssen von Code besessen sein, und ja, das kann dazu führen, dass wir auch stagnieren. Vielleicht wäre es eine gute Entscheidung, wenn Sie sich ein wenig vom Code selbst entfernen und mehr über die Prozesse nachdenken, die in Ihnen ablaufen, dem Produzenten des Codes.
quelle
Das bedeutet, dass Sie Ihr Wissen und Ihre Ansichten erweitern.
Wenn Sie keine Aufgaben mit höherer Priorität haben, sollten Sie immer zurückgehen und Ihren Code verbessern.
quelle
Ich denke immer, dass eine Person eine Matheklasse besucht, um ihre Fähigkeiten in der vorherigen Klasse zu stärken. Die Algebra schien schwer zu sein, bis Sie Algebra II einnahmen. Dann wurden die Fähigkeiten, die Sie in der Algebra gelernt haben, nützlich. Es ist dasselbe beim Programmieren, Schreiben, Holzarbeiten oder irgendetwas anderem.
Während eines Programmierkurses lernten Sie If-then-else, das viele Dinge tat, bis Sie etwas über Schalter lernten. Wenn du etwas Neues lernst, machst du diesen Fortschritt durch, jeder tut es.
quelle
Ich habe das gleiche Gefühl, wenn ich den meisten Code lese, den ich in der Vergangenheit selbst geschrieben habe. Das ist eine gute Sache, es bedeutet, dass sich Ihr Wissen und Ihr Codierungsstil im Laufe der Jahre verbessert haben.
Was die Änderung des Produktionscodes angeht, ist dies ein großes Nein, es sei denn, Sie haben offensichtliche Fehler entdeckt. Nicht nur, weil es Zeitverschwendung sein könnte, sondern vor allem, weil die überwiegende Mehrheit der Software-Fehler von der Art sind, die bei Änderungen an veröffentlichten Programmen auftreten. Statistisch gesehen ist es wahrscheinlich, dass Sie unvorhergesehene Fehler einführen. Wenn es nicht kaputt ist, reparieren Sie es nicht.
quelle
Eine Anwendung zu entwickeln bedeutet, sie zu verbessern und zu verbessern. Dies ist ein kontinuierlicher Prozess, sodass Sie beim Programmieren mehr Erfahrung und Wissen sammeln. Es bedeutet auch, dass Sie auch entwickeln. Wenn Sie also auf Ihren alten Code zurückblicken, stellen Sie möglicherweise fest, dass er verbessert werden kann.
Wenn Sie dieses Gefühl nicht haben, bedeutet dies eines von zwei Dingen:
quelle