Ich kenne diese Situation sehr gut. Wenn ich so feststecke, versuche ich, verschiedene Sichtweisen auf das Projekt zu vertreten.
1.) Sichtweise Benutzer / Kunde - Feedback verwenden
Leider sind wir in unserem Code so gefangen, dass wir unsere eigenen Fehler nicht erkennen können, weil wir unsere Anwendungen so verwenden, wie wir sie codiert haben. Schauen Sie sich an, wie Benutzer es verwenden, und versuchen Sie, die intuitivste Benutzerführung zu finden. Spielen Sie mit UI-Prototypen. Dies scheint Spaß zu machen, aber wenn Sie herausfinden, dass Sie gezwungen wären, große Teile Ihres Codes neu zu codieren, indem Sie einfach die Verwendungslogik ändern, ist es Zeit, einen Neugestaltungszyklus zu starten.
2.) Führen Sie eine Funktionsanalyse Ihres Codes durch und visualisieren Sie diesen
Einige IDEs und Frameworks fordern Sie auf, zB UI- und Backend-Code zu mischen. Wenn Sie dies zulassen, werden Sie eines Tages mit der Situation konfrontiert sein, dass Ihre Codebasis aufgrund nebulöser und schwer zu brechender Abhängigkeiten kaum mehr gewartet werden kann. Insbesondere das Mischen von UI-Code mit anderem Code kann zu Spaghetti-Code und redundanten Funktionen führen. Teilen Sie Ihren Code in Funktionsblöcke wie z. B. Datenbankklassen, Kommunikationsklassen, UI-Klassen, Kernklassen usw. ein und geben Sie den Funktionsblöcken sprechende Namen. Visualisieren Sie dann die Funktionalität mit einem grafischen Tool (ich verwende ein Mind-Mapping-Tool), um herauszufinden, ob Ihre Struktur logisch und modular genug ist, dass Sie riesige Codeblöcke für verschiedene Projekte wiederverwenden und sie durch neuere Versionen ohne ersetzen können große Schmerzen.
Nach meiner Erfahrung ist es am besten, ein Dokument zu erstellen, das alle Abhängigkeiten zwischen Ihren Klassen und deren Aufrufen aus Ihrem Code sichtbar macht. Das Ergebnis ist eine Visualisierung Ihres Interface-Designs. Wenn diese Codezuordnung wie ein kompletter Cluster aussieht, ist es Zeit zu handeln. Wenn dies noch nicht geschehen ist, sollten Sie sich eine geeignete Namenskonvention überlegen, die Ihre Codestruktur so darstellt, dass Sie nicht darüber nachdenken müssen, wie Sie sie aufrufen und wie sie funktioniert.
3.) Verwenden Sie gemeinsame Ansätze zur Qualitätssicherung
Mein Favorit ist die FMEA. In Bezug auf die Codierung bedeutet dies nicht nur zu analysieren, was in der Vergangenheit schief gelaufen ist, sondern auch darüber nachzudenken, was schief gehen könnte. Ein häufig vorkommendes Beispiel ist eine plötzlich unterbrochene Netzwerkverbindung. Danach können Sie die Fehlerbedingungen nach Folgen wie Datenverlust, Absturz, falscher Berechnung klassifizieren und die Auswirkungen auf den Benutzer beurteilen. Wenn dies noch nicht geschehen ist, können Sie mithilfe optimierter Fehler- und Ausnahmeklassen und -routinen Ihren Code sauber und einfach halten. Am besten implementieren Sie diese in jeden neuen Code, bevor Sie überhaupt etwas anderes schreiben. (Nun, ich bin schuld, diesen Rat nicht immer selbst zu befolgen.)
Außerdem half es mir, eine "Verbesserungsvorschlagsliste" für meinen eigenen Code zu erstellen und regelmäßig zu aktualisieren. (Um ehrlich zu sein, meine Projekte enthalten immer noch eine Menge Code, auf den ich definitiv nicht stolz bin.) Ich versuche mir auch die Zeit zu nehmen, um Best-Practice-Code aus API-Dokumentationen, Entwicklerkonferenzen oder Entwicklermagazinen zu sammeln und zu betrachten.
Bis zu diesem Zeitpunkt müssen Sie Ihren Code nicht berühren. Es geht einfach darum, sich darüber im Klaren zu sein, was falsch läuft, und einen Weg zu finden, wie Sie Ihren Code verbessern können.
Zum Schluss noch ein paar Tipps für die tägliche Arbeit von einem alten Furz. Versuchen Sie zu vermeiden, mehr zu beißen, als Sie essen können. Dies führt zu einem zu hohen Druck für eine saubere Codierung. Sie haben selten die Zeit, es richtig zu machen, aber Sie müssen sich die Zeit nehmen, um die Fehler danach zu beheben.
Nichts ist so langlebig wie die vorläufige Lösung, aber wenn es kaputt geht, ist es oft zu spät, es rechtzeitig zu beheben. Beispiele sind böse Hacks oder seltsame Ausnahmen, die ich verwendet habe, um etwas zum Laufen zu bringen, obwohl z. B. das zugrunde liegende Framework oder das Betriebssystem fehlerhaft waren. Und dann wird der Fehler behoben oder die neue Version löscht einfach die API ...
Wenn Sie nicht weiterkommen und gezwungen sind, eine Problemumgehung zu finden, machen Sie Kommentare und machen Sie sich Notizen, die von Zeit zu Zeit überprüft werden sollten. Normalerweise werden wir immer besser, weil wir etwas Neues lernen. Wenn Sie einen besseren Weg finden, setzen Sie ihn so schnell wie möglich um. Andernfalls codieren Sie möglicherweise die Problemumgehung für die Problemumgehung und die Ausnahme der Ausnahme eines Tages. (Wer unter euch ohne Sünde ist, der werfe das erste Byte auf mich.)