Ich muss ein bestehendes Modul eines Projekts erweitern. Ich mag es nicht, wie es gemacht wurde (viele Anti-Patterns, wie zum Beispiel kopierter / eingefügter Code). Ich möchte aus vielen Gründen keinen kompletten Refactor durchführen.
Sollte ich:
- Neue Methoden unter Verwendung bestehender Konventionen erstellen, auch wenn ich das für falsch halte, um Verwirrung für den nächsten Betreuer zu vermeiden und mit der Codebasis konsistent zu sein?
oder
- versuchen Sie zu verwenden, was ich besser finde, auch wenn es ein anderes Muster im Code einführt?
Präzisionsbearbeitung nach ersten Antworten:
Der vorhandene Code ist kein Chaos. Es ist leicht zu folgen und zu verstehen. ABER es wird eine Menge Boilerplate-Code eingeführt, der mit gutem Design vermieden werden kann (der resultierende Code ist möglicherweise schwieriger zu folgen). In meinem aktuellen Fall handelt es sich um ein gutes altes JDBC-DAO-Modul (Spring Template Inboard), aber ich bin bereits auf dieses Dilemma gestoßen und suche nach anderem Entwickler-Feedback.
Ich möchte nicht umgestalten, weil ich keine Zeit habe. Und selbst mit der Zeit wird es schwer zu rechtfertigen sein, dass ein perfekt funktionierendes Modul überarbeitet werden muss. Refactoring-Kosten sind schwerer als die Vorteile. Denken Sie daran: Code ist nicht unübersichtlich oder überkomplex. Ich kann dort nicht wenige Methoden extrahieren und hier eine abstrakte Klasse einführen. Es ist eher ein Fehler im Design (Ergebnis des extremen "Keep It Stupid Simple", denke ich)
Die Frage kann also auch so gestellt werden:
Ziehen Sie es als Entwickler vor, einen einfachen, dummen, langweiligen Code beizubehalten, ODER haben Sie einige Helfer, die den dummen, langweiligen Code an Ihrem Platz ausführen?
Der Nachteil der letzten Möglichkeit ist, dass Sie einige Dinge lernen müssen und möglicherweise auch den einfachen, dummen, langweiligen Code beibehalten müssen, bis ein vollständiges Refactoring durchgeführt ist.)