Umgang mit komplexen Codes in (großen) Projekten


8

Ich bereite eine Abhandlung über "Warum werden (einige) IT-Projekte zu komplex und wie vermeide ich das?" Vor.

Wenn Sie jemals auf Projekte mit komplexen Codes gestoßen sind oder schwer zu warten waren, wie haben Sie es geschafft, diese zu durchlaufen?

Wenn Sie zwischen mehreren Anwendungen wählen müssen, die in Ihrem Projekt verwendet werden sollen, welche Priorität haben Sie in Bezug auf deren Funktionalität und warum?



1
In komplexen Projekten gibt es keine komplexen Codes. Siehe english.stackexchange.com/questions/20455/…

Niemand erwähnte Code Map oder Mind Mapping, weil er nie gelernt hat, sie zu verwenden, und keine Erfahrung damit hat, weil es kein Plugin oder keine Software gibt, die eine Map für den Code-Fluss Ihres großen Projekts erstellen könnte. Millionen von Codezeilen und Sie müssen sie stundenlang durchgehen, um etwas Kleines zu verstehen. Die Art und Weise, wie Menschen Programme erstellen, ist brutal und die Verwaltung eines Projekts dauert lange. Hoffe, dass eintägige visuelle Programmierung oder zumindest Plugins zur Codeflussgenerierung ihren Weg in die Programmierwelt als wertvolles Werkzeug finden.
Eftekhari

Antworten:


8

Dokument, Dokument, Dokument!

Ich arbeite mit ziemlich komplexem MVC-Code und verstehe erst jetzt tatsächlich , wie er funktioniert, anstatt ihn im Glauben zu akzeptieren. Immer wenn ich eine Änderung vornehme, die ich nur schwer herausfinden kann, füge ich einen Kommentar in den Code in diesem Abschnitt ein, um zu klären, was passiert. Es hat mir vielleicht nicht geholfen, da es nicht da war, aber es wird der nächsten Person helfen. Ich möchte auch andere Programmierer um mich herum bitten, meine Änderungen zu überprüfen, um festzustellen, ob sie klar sind.

Mein Unternehmen verfügt über ein internes Wiki, mit dem wir viele unserer Meta-Aufgaben dokumentieren, z. B. Probleme mit virtuellen Servern, häufige Abfragen usw. Immer wenn ich auf etwas stoße, das ich vorher noch nicht getan habe, das ich aber häufig tun muss, überprüfe ich es um zu sehen, ob es ein Wiki gibt. Wenn nicht, mache ich eins. In letzter Zeit haben sich auch mehr Menschen darauf eingelassen, daher hoffe ich, dass es schneller wächst. Ich denke, es hilft wirklich bei der Kommunikation der alltäglicheren Aufgaben, die wir haben.


1
Interessant! Ich frage mich, warum wir nicht so ein Wiki in unserer Firma haben, es wäre viel einfacher gewesen
dagofly

+1 für das Entwickler-Wiki (solange es gut gesichert ist!)
MGOwen

6

Ich glaube nicht, dass Sie Komplexität im Laufe der Zeit vollständig vermeiden können, aber es gibt Möglichkeiten, sie zu mindern:

  • Halten Sie den Code im Rahmen des Zumutbaren jederzeit so sauber wie möglich. (Im Sinne von "wie Onkel Bob" sauber "definiert".)
  • Wenden Sie Codeüberprüfungen und / oder Paarprogrammierung an, um die Wahrscheinlichkeit zu verringern, dass ein Entwickler Dinge unnötig überarbeitet.
  • Sorgen Sie für angemessene Unit-Tests und Integrationstests.
  • Investieren Sie in einen Continuous Integration Server und bauen Sie häufig. Wenn möglich auch oft freigeben.

All dies hängt etwas davon ab, was das Projekt tatsächlich beinhaltet. Manchmal ist es beispielsweise vorteilhaft, Komplexität im Austausch für Leistung zu akzeptieren. Nicht jeder komplexe Code ist notwendigerweise eine schlechte Sache. Im Allgemeinen denke ich jedoch, dass das Befolgen dieser Richtlinien helfen sollte.


3
  • Technische Schulden

    Refactor zu beseitigen

  • geschäftliche Veränderungen

    anpassen und auslöschen

  • Werkzeugwechsel

    neue Werkzeuge, gleiche alte Architektur = Impedanzfehlanpassung


Genau, wenn man sich mit komplexen (schlecht geschriebenen) Code- / Architektur-Mustern befasst, anstatt sie umzugestalten, zahlt sich das Interesse an technischen Schulden aus. Wenn Sie diese schlechten Stellen beseitigen, zahlen Sie PRINCIPAL für technische Schulden zurück
shershen

Interessante Art, dies zu beschreiben, wünschte, einige meiner Kunden könnten dies verstehen. Auf schlechtem, hackigem Grundcode aufzubauen, bedeutet nur, dass in Zukunft komplexere Hacks erforderlich sind, anstatt nur anzuhalten, zu schauen, wo wir sind und wie wir das Leben einfacher und schneller machen können, und diese Richtung zu gehen .. while ($ client_does_not_listen) { $ client_does_not_listen = verschwenden_zeit_und_geld_until_client_listens (); }, pass auf, denn diese einfache while-Schleife verschwendet deine Lebensminuten und macht dich wahnsinnig und kann eindeutig nur vom Client abgebrochen werden. Ich habe sogar versucht, einen try {} catch () ohne Erfolg einzusetzen. .
NinjaKC

3

Widerstehen Sie auch der Versuchung, schnelle Hacks hinzuzufügen, da der Code bereits komplex / schlecht / hackig ist. Nach meiner Erfahrung werden Sie exponentiell komplexer.


5
Absolut. Wenn Sie sich in einem Loch befinden, müssen Sie zuerst aufhören zu graben.
PeterAllenWebb
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.