Ich verliere den Überblick über den Ablauf meiner PHP-Webanwendung. Es wird immer schwieriger, damit zu arbeiten

14

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.

Douglas Gaskell
quelle
1
Thanks @gnat Ich bin jedoch weniger daran interessiert, einen Fall für meinen Chef zu machen, als vielmehr herauszufinden, wie ich die Probleme tatsächlich selbst beheben kann. Es nützt nichts, meinem Chef einen Fall vorzulegen, wenn ich keine gute Methode zum Erkennen und Ändern von Problemen kenne.
Douglas Gaskell

Antworten:

11

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.

kandierte_orange
quelle
1
"Niemand wird dich dabei erwischen, wie du Schlamassel machst und dich rauswirbelst." ... es sei denn, Sie führen eine Codeüberprüfung durch. ;)
jpmc26
1
@ jpmc26 Wenn Sie glauben, dass Sie durch Code-Überprüfungen vor diesem Schicksal bewahrt werden, irren Sie sich. Code Reviews helfen Ihnen nur, wenn Sie bereit sind, von anderen zu lernen. Nicht, wenn Sie sich auf eine Frist konzentrieren. Arbeiten, chaotisch, Code wird immer wieder Meinungen trumpfen. Ich habe gesehen, wie Manager diese Streitigkeiten durch Umdrehen eines Viertels gelöst haben. Wenn Sie sich nicht für Qualität interessieren, wird niemand in der Lage sein, es aus Ihnen herauszuziehen. Denken Sie nicht, dass Sie sich darauf verlassen können, dass andere Sie vor dem Durcheinander bewahren. In diesem Fall werden Sie lediglich mit der Aktualisierung der Dokumentation beauftragt.
candied_orange
Wenn Sie meinen Kommentar lesen und meinen, ich würde sagen, Code Reviews seien magisch wie Einhörner und Regenbögen, die alles ohne Anstrengung oder Bereitschaft reparieren, dann irren Sie sich unglaublich. Aber sie geben jemandem die Chance, Sie darauf aufmerksam zu machen.
jpmc26
1
@ jpmc26 Wenn du meine Antwort liest und denkst, dass ich sage, dass es keine Hoffnung gibt, gib einfach auf, dann irrst du dich unglaublich. Ich fordere die Programmierer auf, die persönliche Verantwortung für sauberen Code zu übernehmen, anstatt sich auf einen Prozess zu verlassen, der dies ermöglicht. Nur eins ist wichtig. Sie interessieren sich entweder oder Sie nicht.
candied_orange
Natürlich, aber selbst der beste Programmierer wird von Zeit zu Zeit dumme Entscheidungen treffen. Code-Reviews mit einer anderen Person geben Ihnen die Möglichkeit, Ihren Code vor eine andere Person zu stellen, die ihn früher abfangen kann. Das ist der springende Punkt . Es ist schwer , Problemstellen selbst zu erkennen, bis Sie tatsächlich versuchen, etwas zu ändern, und es wird schwierig. Natürlich sind Code-Reviews und andere Techniken nutzlos, wenn Sie sich nicht darum kümmern.
jpmc26
9

Die Implementierung von Neuem dauert immer länger.

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.

Jen
quelle
3
Genau das habe ich in der Vergangenheit mit meinem Erbe gemacht. Das Schöne daran: Sobald Sie den Wendepunkt erreicht haben, fängt das Projekt an, wie mit Feenstaub zu glühen.
qwerty_so
-2

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

Archimedes Trajano
quelle
1
Leider kann ich JVM nicht auf meinem Arbeitsgerät installieren. Das sieht ansonsten nach einem großartigen Werkzeug aus.
Douglas Gaskell
Das ist ziemlich drakonisch für eine Entwickler-Workstation.
Archimedes Trajano
Ich habe keine lokalen Administrator- oder Installationsberechtigungen oder keine Ausführungsberechtigungen für Anwendungen, die nicht auf der weißen Liste stehen. Früher war es viel schlimmer ... leider.
Douglas Gaskell
Ich kann nicht sagen, dass ich einfühle, aber ich sympathisiere.
Archimedes Trajano
Heruntergestuft, da es sich nur um eine Anzeige / einen Link zu einem Tool handelt, nicht um eine Antwort auf die Frage des OP.
James Snell