Ich leite ein kleines Entwicklerteam. Von Zeit zu Zeit beschließen wir, ein oder zwei Tage für die Bereinigung unseres Codes aufzuwenden.
Wäre es eine gute Idee, eine reguläre Zeit einzuplanen, z. B. 1 Woche alle 2 Monate, um nur unsere Codebasis zu bereinigen?
Antworten:
Nein.
Beheben Sie es, während Sie daran arbeiten:
quelle
Meine persönliche Meinung: Für 90% der Projekte unbedingt erforderlich .
Insbesondere für Projekte, die stark vom Verkauf getrieben werden, gibt es in der Regel große Anstrengungen, neue Funktionen in jede Version aufzunehmen, und Sie müssen zwangsläufig Ihre besseren Instinkte aufs Spiel setzen und hier und da ein paar Kludges / Hacks einführen.
Schließlich haben Sie durch diese kleinen Kompromisse genug „technische Schulden“ gemacht, sodass Sie am Ende eine ganze Menge Zeit damit verbringen, die Fehler in der Codebasis zu beheben, und nicht in der Lage sind, ihr volles Potenzial auszuschöpfen.
Normalerweise werden auf diese Weise zwei Arten von Problemen generiert:
Im Allgemeinen versuche ich, alle 3 bis 4 Zyklen Zeit für einen reinen Refactorring- / Bugfixing-Zyklus zu reservieren. Ich fordere meine Entwickler immer auf, mir mitzuteilen, wenn sie mit der Codebasis ebenfalls frustriert sind. Nicht jeder Entwickler muss an den Aufräumarbeiten arbeiten - normalerweise (aber nicht immer) können Sie die Teams ein wenig verschieben, sodass immer nur ein Team an den Aufräumarbeiten arbeitet.
quelle
Ich habe meine Entwickler ihren Code vor dem Einchecken (Subversion) oder Zusammenführen mit dem Hauptentwicklungszweig (Git) aufräumen.
Ich habe sie das folgende tun:
Bei größeren Projekten wird der Code vor dem Zusammenführen vom Entwicklungszweig zum Hauptzweig formal überprüft.
Ich denke, dass "Zeit widmen" bedeutet, dass es etwas ist, das aufgrund des Arbeitsaufwands verschoben oder verschoben werden könnte. Wenn Entwickler dies per Check-in durchführen (was einer Änderungsanforderung / einem Problem in JIRA entspricht), ist dies viel einfacher zu handhaben.
quelle
Meiner Meinung nach nicht. Wenn Sie zwischen dem Auftreten einer technischen Verschuldung und dem Beheben zu viel Zeit verstreichen lassen, verlieren Sie den Zusammenhang mit dem Problem. Die Reparatur dauert länger und wird in der Regel schlechter. Am wichtigsten ist, dass die Leute die zerbrochenen Fenster verlassen, weil es keine "Aufräumwoche" ist.
Persönlich verhandele ich für die technische Schuldenbereinigung jeden Sprint, wenn ich weiß, dass wir im Sprint zuvor einige erstellt haben. Es hält die Schulden in den Köpfen der Menschen frisch. Durch die Verwendung des Problemcodes wird die Codemenge begrenzt, sodass das Refactoring einfacher ist. Es verhindert, dass sich technische Schulden häufen. Und es hilft Entwicklern dabei, etwas nicht nur zusammenzuschlagen, sondern es auch gleich beim nächsten Sprint richtig zu machen.
quelle
Ich würde auf jeden Fall mit der Maßgabe Ja sagen: Es sollte oft gemacht werden, vorzugsweise auf wöchentlicher Basis. Ich glaube, dass sich eine geplante regelmäßige Codeüberprüfung in Verbindung mit der tatsächlichen Bearbeitung der aus der Codeüberprüfung resultierenden Elemente sehr schnell auszahlt. Siehe die Antwort von pswg
1 Woche alle 2 Monate ist definitiv nicht oft genug. Dies spricht für die meisten anderen Antworten, die auf Ihre Frage mit "Nein" geantwortet haben. Der Kern der meisten dieser Antworten ist, dass Sie, wenn Sie zu lange warten, nicht mehr mit dem Code in Kontakt sind und das Reparieren / Aufräumen / Refaktorieren in der Regel viel länger dauert.
quelle
Es ist nicht so klar, ob Sie ab und zu eine zusätzliche Übung zur Code-Bereinigung gemeint haben. In diesem Sinne ja. Was immer wir praktizieren, es kommt immer zu einer gewissen Verschlechterung.
Sie sollten dies nicht als Vorwand nehmen, um nicht das Richtige zu tun [Anwenden von SOLID-Grundsätzen, relevanten Komponententests, Inspektionen usw.].
quelle
Ich denke, dass die derzeit zwei populären "Nein" - "Ja" -Antworten zwei Aspekte derselben Wahrheit sind. Denken Sie daran, dass das OP von einer von ihm verwalteten Gruppe spricht, nicht nur von sich selbst als Einzelperson. Wir können nicht davon ausgehen, dass alle Entwickler in der Gruppe diszipliniert genug sind, um sauberen, leicht lesbaren Code zu schreiben. und es gibt das Problem von externem Druck und agilen Methoden. Auch wenn sich die Leute nach besten Kräften bemühen, werden sie aufgrund ihres unterschiedlichen Stils möglicherweise Code schreiben, der als sauber angesehen wird, wenn er auseinander liegt, aber unsauber, wenn er zusammen mit anderen betrachtet wird (ganz zu schweigen von den knarrenden Oberflächen).
Andererseits ist das "Reparieren während des Arbeitens" meiner Meinung nach ein Ideal, nach dem man streben kann. Sie können Ihren Code noch "fester" machen, indem Sie
Wenn das OP-Team nun das oben Genannte anwendet und seine Untergebenen - z. B. bei Codeüberprüfungen und bei regelmäßigen Code-Bereinigungssitzungen - dazu ermutigt, Fallen zu antizipieren und Hässlichkeiten im Voraus zu vermeiden, wird es im Laufe der Zeit hoffentlich weniger brauchen Putzzeit. (Und dann könnten sie diese Zeit für Dokumentation, tiefgreifendes Refactoring und Wissensaustausch über das, was sie geschrieben und konsolidiert haben, verwenden.)
quelle
Ich denke, die Planung der regulären Zeit ist sehr gut, egal ob es sich um eine Aufgabe in einem regulären Wasserfallprojekt oder um Geschichten in einem agilen Projekt handelt. Eine festgelegte Zeit zu haben, ist möglicherweise nicht so wertvoll, als sie nur in Ihren Zeitplan einzuarbeiten. Auf diese Weise können Sie es als Teil des Zeitplans erledigen oder den Bereinigungstag absagen, da Sie mit dem Projekt im Rückstand sind.
Nachdem wir ein Projekt mit einer enormen Code-Verschuldung geleitet hatten, war die regelmäßige Bearbeitung der Projekte der Schlüssel für ein reibungsloses Funktionieren. Einige unserer Sachen waren groß, andere waren klein.
Nach ein paar Monaten dieser Art von Arbeit erzählte mir unser Operations-Teamleiter, wie reibungslos alles lief.
Jeder Gegenstand scheint nicht viel zu sein, aber genau wie alle Schulden wird er hochgeschraubt.
quelle
Die ideale Antwort lautet "Nein", da Sie die notwendigen Schritte unternehmen, um dies nicht zu einer Notwendigkeit zu machen (bereinigen Sie währenddessen aus mehreren bereits genannten Gründen).
Dies mag am Ende das Ziel sein, aber Sie haben vielleicht ein Team, das weit davon entfernt ist, dies in die Praxis umzusetzen.
Manager müssen Verantwortung übernehmen Es ist nicht immer die Schuld des Entwicklers. Manager können eins sagen, aber sie drängen darauf, dass Projekte abgeschlossen werden und machen Vorschläge, die schlechte Praktiken fördern. Sie können buchstäblich sagen, "wir werden es später aufräumen" oder wenn es funktioniert, ist das gut genug.
Möglicherweise müssen Sie zunächst eine bestimmte Zeit festlegen, um zu zeigen, dass dies wichtig ist. Sobald Sie wissen, dass Ihr Team in der Lage ist, seinen Code zu bereinigen (nicht selbstverständlich), können Sie versuchen, ihn häufiger zu integrieren.
Schließlich sollten Sie keine Zeit festlegen müssen.
Persönlich habe ich Probleme damit, ein neues Problem zu lösen und es zum Laufen zu bringen, während ich versuche, die Dinge in Ordnung zu halten. Ich werde besser darin, mache aber oft eine absichtliche Pause und räume auf. Es ist eine andere Einstellung für mich. Schließlich werden die festen Praktiken zur Gewohnheit.
quelle
Nein, Sie sollten dies tun, während Sie programmieren. Dies wird als Refactoring bezeichnet, wenn Sie TDD verwenden. Das Problem, wenn Sie ein oder zwei Monate warten, um den Code zu reparieren und zu bereinigen, besteht darin, dass Sie möglicherweise das Verhalten des Codes ändern, da Sie sich nicht an jeden Teil Ihres Codes erinnern.
Ich schlage Refactoring vor, das darauf basiert, zuerst den notwendigen Code zu codieren, damit etwas funktioniert, und sobald es funktioniert, es neu zu entwerfen, zu optimieren und hübsch zu machen.
quelle