Was sind gute Ansätze, um alte Projekte zu bereinigen?

11

Ich habe eine Software, die ich vor ungefähr 2 Jahren geschrieben habe und die einige Funktionen benötigt. Ich habe festgestellt, dass es ein schreckliches Durcheinander ist, und ich habe das Bedürfnis, alles zu bewegen, aufzuräumen usw. Ich habe den Artikel über Joel on Software gelesen, in dem es darum geht, nicht erneut zu starten. Was ist also der beste Weg nach vorne?

Billy Bob
quelle
Mit welchen Entscheidungen von damals sind Sie heute nicht einverstanden?

Antworten:

21

Sie haben drei grundlegende Möglichkeiten:

  1. Wenn die App sehr klein und ein echtes Durcheinander ist , ist ein erneuter Start möglicherweise die beste Wahl.

  2. Refactor .

  3. Lebe mit dem Durcheinander und hacke die zusätzlichen Funktionen.

Normalerweise ist Option (2) die beste Wahl.

Wie viel Refactoring Sie tatsächlich durchführen, hängt von der eingesetzten Ressource und dem Wert ab, den Sie erhalten. Zu den zu stellenden Fragen gehören:

  1. Welche Zeit / Budget steht zur Verfügung?
  2. Wie viel Modifikation erwarten Sie in Zukunft?
  3. Wer sonst wird den Code sehen? (dh wird unordentlicher Code Ihrem Ruf schaden?)
  4. Wird von jemand anderem erwartet, dass er den Code pflegt?
  5. Welche Refactoring-Tools stehen Ihnen zur Verfügung?
  6. Welche Erfahrungen haben Sie mit Refactoring gemacht?
  7. Welche Erfahrungen werden Sie mit dem Refactoring sammeln?
  8. Welche Art von Refactoring bietet Ihnen die meisten Vorteile?
  9. Welche automatisierten Tests gibt es bereits? Müssen geschrieben werden?
  10. Wie viele manuelle Tests sind erforderlich?
  11. Wie werden Sie sich fühlen, wenn Sie den Code so lassen, wie er ist?

Nach meiner Erfahrung ist es sehr einfach, während einer Refactoring-Sitzung in das richtige Durcheinander zu geraten. Die wichtigsten Lektionen, die ich gelernt habe, sind:

  1. Mach eins nach dem anderen.
  2. Mach kleine Schritte.
  3. Nutzen Sie Ihre Quellcodeverwaltung (checken Sie häufig ein + fügen Sie Kommentare hinzu).
  4. Nutzen Sie automatisierte Refactoring-Tools.
  5. Kennen Sie die IDE.
Kramii
quelle
6
Ich möchte auch hinzufügen, um zu vermeiden, dass ein Zustand zu lange unterbrochen wird. Ich habe viele Open-Source-Projekte gesehen, die während eines ehrgeizigen Umschreibens / Redesigns schnell gestorben sind. Ein nicht funktionierendes Projekt tötet die Motivation schnell.
LennyProgrammers
2
Absolut. In Bezug auf ehrgeizige Umschreibungen / Designs bin ich mehr als einmal darauf gestoßen. Jetzt versuche ich, die Dinge in kleineren Schritten zu erledigen. Ich habe diesen Vorschlag zu meiner Antwort hinzugefügt.
Kramii
Ich würde auch hinzufügen, dass Sie nichts umgestalten sollten, für das kein Test geschrieben wurde. Widerstehen Sie dem Drang, alles zu reparieren, und konzentrieren Sie sich nur auf die Bereiche, die geändert werden müssen, um die neuen Funktionen hinzuzufügen. Sobald Sie dies erledigt haben, entscheiden Sie, wie viel zusätzlichen Aufwand Sie investieren möchten, um den Rest zu überarbeiten.
TMN
1
@ TMN: Idealerweise ja. Allerdings müssen Sie nicht immer brauchen einen automatisierten Test. (1) Wenn Code ohne automatisierte Tests entwickelt wurde, ist es möglicherweise nicht einfach / möglich, Komponententests nachzurüsten, bis Sie bereits einige Umgestaltungen vorgenommen haben. (2) Es kann teuer sein, Tests zu schreiben, bevor triviale, lokalisierte Änderungen vorgenommen werden. (3) Automatisierte Refactoring-Tools + IDE-Funktionen können dazu beitragen, das Brechen von Code infolge von Refactoring zu verhindern.
Kramii
2
Ich würde hinzufügen - in Ihrer Quellcodeverwaltung setzen Sie das gesamte Refactoring auf einen separaten BRANCH. Dies hilft sowohl bei vernünftigen schrittweisen als auch bei Big-Block-Vergleichen. Dies kann von unschätzbarem Wert sein, wenn sich die Dinge in Pudding verwandeln (WAS SIE WOLLEN).
schnell_now
5

Zumindest Refactor genug, damit die neue Funktion sicher hinzugefügt werden kann. Das heißt, es nicht noch schlimmer machen. Der Rest hängt von Motivation, Budget und Zeitbeschränkungen ab. Beachten Sie jedoch, dass das vollständige Aufräumen eines Chaos länger dauern kann als ursprünglich.

user281377
quelle
1
Dies ist natürlich die berühmte Boyscout-Regel: Lassen Sie den Code immer in einem besseren Zustand, als Sie ihn gefunden haben.
Jörg W Mittag
2

Stellen Sie diesmal sicher, dass Sie die Dinge dokumentieren, während Sie sie reparieren. Wenn Sie das nächste Mal den Code sehen, ist es viel einfacher, sich an die Dinge zu erinnern.

Manoj R.
quelle
1

Es hängt davon ab, ob es mehr Zeit kostet, es zu warten, weil es ein Durcheinander ist, oder es neu zu schreiben, damit es kein Durcheinander ist und leicht zu warten ist. Ich werde persönlich durch diese gerade jetzt, ich bin Umwandlung eines Intranet - Site zu ASP.Net MVC3 weil der alte Code ein Haufen Mist war (die ich schrieb) weil es angeblich Einweg sein (ja, ich sollte es besser wissen ). Der alte Haufen Mist ist immer noch hier, und es bereitet Kopfschmerzen, Funktionen hinzuzufügen und Fehler zu beheben. MVC ist wunderschön und macht das Arbeiten daran wirklich angenehm, so dass es neu geschrieben wird.

BlackICE
quelle