Wir haben einen wirklich schockierenden Code, der als Rahmen für die nächste Generation an meinem derzeitigen Arbeitsplatz angepriesen wird.
Tatsache ist, es gibt nur eine Person dieser Meinung und das ist der Typ, der das meiste geschrieben hat. Der Rest der Abteilung hat den Eindruck, dass es schlecht codiert ist, ein Pita zum Debuggen und nur ein bisschen Nack im Allgemeinen.
Der Typ, der es geschrieben hat, hat eine ziemlich einflussreiche Position beim Management, also sind sie auf dieser Seite des Lagers.
Wir haben dem Management (echte) Bedenken aufgezeigt, aber offensichtlich sind sie nicht bereit, mehr Zeit in ein Projekt zu investieren, das nicht direkt zum Endergebnis beiträgt.
In diesem Framework sind mehrere Anwendungen implementiert, so dass jedes Refactoring diese Anwendungen umfassen muss.
Das Ganze ist so ineinander verschlungen, dass wir nicht einfach eine Implementierung einer bestimmten Klasse herausreißen und sie so umschreiben können, dass selbst einfache Änderungen an Core API ein großes Projekt bedeuten.
Es hat jedoch 3 Jahre Live-Bereitstellung und viele Bugfixes, Eckfälle und Randbedingungen sind vorgesehen.
Schreiben wir Teile neu und versuchen, das zu reformieren, da es sich um mehrere große Projekte handelt, die mit der Zeit umgestaltet werden, was wahrscheinlich noch weitere drei Jahre dauern wird, um sie in Form zu bringen, oder schreiben wir einfach unsere spezifischen Anforderungen neu eines bestehenden Frameworks?
Etwas umzuschreiben ist fast immer eine schlechte Idee - du verbringst Monate damit, bis du fertig bist. Und das setzt voraus, dass Sie nicht dem Second-System-Effekt anheim fallen und dass Sie tatsächlich beenden.
Refactoring ist mit ziemlicher Sicherheit die richtige Antwort. Ich habe keine Erfahrung mit PHP-Refactoring (ich mache C ++ und C #), daher kann ich keinen konkreten Rat geben. Sie müssen mit kleinen Schritten fortfahren.
Aber: Lass nicht alles fallen, um den Code neu zu schreiben. Refactor allmählich. Es wird dich ein wenig verlangsamen, aber du wirst immer noch Wert liefern, während du mitgehst.
Siehe diesen Artikel , der Ihnen helfen wird Erklären Sie Ihrem Management die technischen Schulden. Es wird auch erklären, warum sie sich nicht darum kümmern.
Der Vorteil des Neuschreibens besteht darin, dass Sie alle neuen Elemente in der Analysephase berücksichtigen und ein Modell erstellen können, das besser an die aktuellen Anforderungen angepasst ist. Auf der anderen Seite, wenn es nur schlecht codiert, nicht schlecht entworfen, hat es keinen Sinn, komplett neu zu schreiben. Säubern Sie einfach den Code / refactor.
das ist eine wirklich schwierige Entscheidung zu treffen ...
Das Problem, das ich hier sehe, ist, dass das Framework für eine lange Zeit benutzt und repariert wird, so dass viel Wissen darin steckt und die Qualität für die laufenden Projekte offensichtlich akzeptabel ist. Wenn Sie es also von Grund auf neu schreiben, mit all den Anforderungen, die Sie kennen, können Sie sicher sein, dass Sie etwas vergessen werden, was bereits funktioniert hat (schwer, das einem Kunden oder Ihrem Chef zu erklären;))
es zu refaktorisieren - es ist auch eine schwierige Aufgabe, da es nur einen gibt, der wirklich die Zusammenhänge innerhalb des Codes kennt - wer will das nicht ändern ...
gibt es drei Optionen:
Wie auch immer Sie es formulieren - es ist eine schlechte Situation für alle ... denn mit der Zeit wird derjenige, der für den Rahmen verantwortlich ist, selbst damit fertig werden müssen und dann ist es wahrscheinlich zu spät.
Auf einer kleinen Ebene, ja: Stellen Sie eine neue Version einer Funktion bereit, vergewissern Sie sich, dass sie sowohl mit dem neuen als auch mit dem alten funktioniert, entfernen Sie das alte. Das ist oft genug schneller als das Refactoring der Funktion selbst. Aber auf dieser Ebene ist es Refactoring:)
Die strategischen Kosten eines Neuschreibens übersteigen praktisch immer das Refactoring.
Sie können nicht liefern. Sie müssen die alte Version beibehalten, während Sie die neue entwickeln. Wenn die Finanzen sagen, dass Sie das Neuschreibprojekt abbrechen müssen, haben Sie nichts erreicht - Ihre Arbeitscode-Basis ist in einem schlechten Zustand, als ob nichts jemals getan wurde. Vermutlich sogar noch schlimmer, da alle Änderungen blockiert waren, weil "wir das wegwerfen werden, wenn das Neuschreiben sowieso beendet ist".
Ja Szenarien, in denen das Neuschreiben billiger ist, können konstruiert werden:
Dennoch zeigt die Erfahrung, dass Code aus einem bestimmten Grund schlecht ist, und es sind nicht immer die Codierer, und wenn Sie die Ursachen nicht identifizieren und ändern, wird das Neuschreiben eine Übung in der Wiederholung der Geschichte sein.
Das Umschreiben ist sehr riskant. Sie ersetzen alten gut debugged Code mit neuem Code, der noch debuggt werden soll. Dies führt zu einer ganzen Reihe von Fehlern und Sie müssen sie beheben. Es ist besser, nach und nach zu refactorieren - zuerst zu verstehen, was ein Teil ist, und dann neu zu gestalten. Auf diese Weise ersetzen Sie weniger Code und senken das Risiko, zu viele neue Bugs einzuführen.
Um zu dem zu ergänzen, was bereits gesagt wurde: Versuche Management Buy-In zu bekommen. sind Vorteile für das Endergebnis beim Umgestalten - die Arbeitsstunden für das Programmieren neuer Funktionen werden im Laufe der Zeit und nicht mehr nach oben gehen, was zu geringeren Lohnkosten und möglicherweise auch Serverkosten führt. Wenn Ihr Management nicht versteht, warum Refactoring sich lohnt und Sie glücklicher machen wird, arbeiten Sie am richtigen Ort?
Tags und Links php frameworks legacy refactoring