Ich habe eine vorhandene Codebasis für ein Produkt geerbt, das verwerflich schlampig ist. Das grundlegende Design ist absolut unzureichend, was ich leider nur wenig ohne einen kompletten Refaktor tun kann (HOHE Kopplung, NIEDRIGE Kohäsion, zügellose Vervielfältigung von Code, keine technische Designdokumentation, Integrationstests anstelle von Komponententests). Das Produkt hat eine lange Geschichte, ein hohes Risiko für kritische "Cash-Cow" -Kunden mit minimaler Risikobereitschaft, technische Schulden, die die Griechen erröten lassen, eine SEHR große Codebasis und Komplexität sowie eine kampferprobte defätistische Herangehensweise des Teams an Bugs mir.
Das alte Team sprang in eine andere Division, um die Möglichkeit zu haben, ein anderes Projekt zu ruinieren. Es kommt sehr selten vor, dass ich im Gegensatz zu einem Projektmanagement-Fehler einen Projektfehler mit technischer Inkompetenz erleide, aber dies ist in der Tat einer dieser Fälle.
Im Moment bin ich alleine, aber ich habe viel Zeit, Entscheidungsfreiheit und zukünftige Richtung und die Fähigkeit, ein Team von Grund auf neu aufzubauen, um mir zu helfen.
Meine Frage ist es, eine Meinung zum Thema „Low Impact Refactoring“ für ein Projekt wie dieses zu sammeln, wenn Sie in der Phase des Sammelns der funktionalen Anforderungen etwas Zeit haben. Es gibt Tausende von Compiler-Warnungen, fast alle davon nicht verwendete Importe, ungelesene lokale Variablen, fehlende Typprüfung und unsichere Umwandlungen. Die Code-Formatierung ist so unleserlich und schlampig, dass es aussieht, als ob der Programmierer an der Parkinson-Krankheit leidet und nicht kontrollieren kann, wie oft die Leertaste in einer bestimmten Zeile gedrückt wurde. Weitere Datenbank- und Dateiressourcen werden normalerweise geöffnet und niemals sicher geschlossen. Sinnlose Methodenargumente, doppelte Methoden, die dasselbe tun, usw.
Während ich auf die Anforderungen für die nächste Funktion warte, habe ich im Laufe der Zeit Dinge mit geringen Auswirkungen und geringem Risiko gesäubert und mich gefragt, ob ich meine Zeit verschwende oder das Richtige tue. Was ist, wenn die neue Funktion das Herausreißen von Code bedeutet, für den ich früher Zeit aufgewendet habe? Ich werde einen agilen Ansatz verfolgen und ich verstehe, dass dies akzeptabel und normal ist, um mich während der agilen Entwicklung ständig zu verändern.
Können Sie sich positive oder negative Auswirkungen vorstellen, wenn ich dies tue, die Sie hinzufügen möchten?