Wenn Sie in Sprachen arbeiten, denen eingebaute Struktur- und Organisationsfunktionen fehlen (z. B. wenn Namespaces, Pakete, Assemblys usw. fehlen) oder wenn diese nicht ausreichen, um eine Codebasis dieser Größe unter Kontrolle zu halten, ist die natürliche Reaktion die Entwicklung unsere eigenen Strategien, um den Code zu organisieren.
Diese Organisationsstrategie enthält wahrscheinlich Standards, die sich darauf beziehen, wo verschiedene Dateien aufbewahrt werden sollen, was vor / nach bestimmten Arten von Vorgängen geschehen muss und Namenskonventionen und andere Codierungsstandards sowie vieles, was so eingerichtet ist - Leg dich nicht damit an! " Typenkommentare - die gültig sind, solange sie erklären, warum!
Da die Strategie höchstwahrscheinlich auf die spezifischen Anforderungen des Projekts zugeschnitten sein wird (Menschen, Technologien, Umgebung usw.), ist es schwierig, eine einheitliche Lösung für die Verwaltung großer Codebasen zu finden.
Aus diesem Grund denke ich, der beste Rat ist, die projektspezifische Strategie zu übernehmen und ihre Verwaltung zu einer Schlüsselpriorität zu machen: Dokumentieren Sie die Struktur, warum dies so ist, die Prozesse für die Vornahme von Änderungen, prüfen Sie sie, um sicherzustellen, dass sie eingehalten werden. und entscheidend: Ändern Sie es, wenn es geändert werden muss.
Wir sind in der Regel mit dem Umgestalten von Klassen und Methoden vertraut, aber mit einer großen Codebasis in einer solchen Sprache ist es die Organisationsstrategie selbst (einschließlich Dokumentation), die nach Bedarf umgestaltet werden muss.
Die Überlegungen sind die gleichen wie beim Refactoring: Sie entwickeln eine mentale Blockade für die Arbeit an kleinen Teilen des Systems, wenn Sie der Meinung sind, dass die gesamte Organisation des Systems durcheinander ist, und lassen es schließlich zu, dass es sich verschlechtert (zumindest ist das meine Einstellung) es).
Die Vorbehalte sind auch die gleichen: Verwenden Sie Regressionstests, stellen Sie sicher, dass Sie leicht zurücksetzen können, wenn das Refactoring fehlschlägt, und gestalten Sie dies so, dass das Refactoring an erster Stelle erleichtert wird (oder Sie tun es einfach nicht!).
Ich bin damit einverstanden, dass dies viel schwieriger ist als das Umgestalten von direktem Code, und es ist schwieriger, die Zeit für Manager / Kunden zu validieren / zu verbergen, die möglicherweise nicht verstehen, warum dies getan werden muss, aber dies sind auch die Arten von Projekten, die am anfälligsten für Softwarefäule sind verursacht durch unflexible Top-Level-Designs ...