Ich programmiere seit einigen Jahren und bin mit der Zeit mit C # und JavaScript sehr vertraut geworden. Ich habe einige größere C # - und JavaScript-Projekte, in denen ich problemlos navigieren kann. Ich habe kürzlich ein PHP & AngularJS-Projekt für die Arbeit ohne vorherige Erfahrung mit PHP gestartet.
Der Fluss der PHP-Seite der Dinge wird immer schwieriger nachzuvollziehen (die JavaScript-Seite ist größer, aber einfach zu durcharbeiten). Große Designfehler, die ich gemacht habe, als ich anfing, häufen sich und wirken sich auf mein Design aus. Die Implementierung von Neuem dauert immer länger.
Ich bin in einer engen Frist und finde es immer schwieriger, guten, TROCKENEN, FESTEN Code zu schreiben. Es wird immer verlockender, Codestücke zu kopieren und einzufügen, um mit zunehmender Entwurfszeit geringfügige Änderungen am Verhalten vorzunehmen. Es dauert auch lange, bis ich wieder in die Codebasis zurückgekehrt bin, wenn ich einen Kontextwechsel durchführen muss (von einem Projekt zum nächsten). Ich habe ein furchtbares Gefühl, wenn ich wieder an diesem Projekt arbeite.
Welche Schritte kann ich unternehmen, um dies zu beheben? Die zusätzliche Zeit, die möglicherweise benötigt wird, muss auch gerechtfertigt sein. Mein Chef ist kein Entwickler und kennt sich nicht mit der Entwicklung oder den Software-Lebenszyklen aus. Daher ist das Erklären möglicherweise schwieriger als normal.
quelle
Antworten:
Sie übernehmen technische Schulden. Je mehr Sie schlampigen Code mit Fristen rechtfertigen, desto mehr Fristen erzielen Sie immer weniger.
Verstehen Sie, dass Sie damit völlig durchkommen können. Niemand wird dich dabei erwischen, wie du ein Durcheinander machst und dich rauswirbelst. Du wirst nur eines Tages aufwachen, umgeben von Unordnung.
An diesem Punkt aktualisieren Sie entweder Ihren Lebenslauf und machen ihn zu meinem Problem, oder Sie entschließen sich, die Schulden zu begleichen und einige Zeit damit zu verbringen, den Code zu reinigen.
Wenn Sie sich für die Reinigung entscheiden, müssen Sie verstehen, dass es nicht darum geht, mehr Zeit für das Design aufzuwenden. Hier geht es darum, ein paar faule Gewohnheiten zu brechen und den Müll rauszuholen.
Es ist eine schlechte Idee, schmutzigen Code in den Großhandel zu werfen. Nicht wegen der damit verbundenen Arbeit, sondern weil der Arbeitscode eine Idee aufnimmt. Bewegen Sie die Idee in sauberen Code, bevor Sie den schmutzigen Code wegwerfen.
Unit-Tests helfen dabei, aber wenn Sie Ihre Tests mit der gleichen Sorgfalt erstellt haben, die Sie in das Chaos gesteckt haben, müssen sie wahrscheinlich auch korrigiert werden.
Gib dich nicht der Starrheit hin. Wenn Sie es nicht ändern können, dann ist es keine Software.
quelle
Das ist deine Rechtfertigung. Machen Sie eine Pause, essen Sie ein bisschen Krähe und erklären Sie, warum die Dinge länger dauern und dass Sie ein wenig Zeit für die Umgestaltung + Neugestaltung des Systems benötigen.
Wenn Sie das nicht tun, müssen Sie nach und nach auf dem Tiefstand umgestalten. Aufgaben dauern bereits länger als gewünscht - nehmen Sie sich jedes Mal etwas mehr Zeit, wenn Sie die Codebasis berühren, um zu versuchen, etwas zu verbessern. Fügen Sie einen Integrationstest hinzu. Extrahieren Sie eine Abstraktion.
Die blöde Antwort auf "Wie kann ich ein riesiges Projekt umgestalten?" ist "Stück für Stück".
BEARBEITEN
Hat verwandte Beiträge gelesen und ist auf diesen Blog-Beitrag gestoßen : http://ronjeffries.com/xprog/articles/refactoring-not-on-the-backlog/ . TLDR : Versuchen Sie nicht, eine große Refactor-Phase in Ihrem Projekt zu erstellen. Es ist unwahrscheinlich, dass die Projektbesitzer sich dafür engagieren, und Sie werden in der Zeit, die Sie haben, keine Entscheidung darüber treffen, was zu tun ist. Nehmen Sie sich stattdessen die Zeit für jede neue Änderung oder Fehlerbehebung, um den Code, mit dem Sie gerade arbeiten, zu verwerfen. Lassen Sie Gerüche nicht hängen, wenn Sie die Möglichkeit haben, sie zu beseitigen.
quelle
Sonarqube unterstützt PHP, sodass Sie Ihre aktuellen Schulden und neue Lecks besser nachverfolgen können. http://docs.sonarqube.org/display/PLUG/PHP+Plugin
Live-Beispiel mit Drupal https://sonarqube.com/dashboard?id=drupal
quelle