2010-02-01 19 views
6

Gibt es einen Hinweis, wie man mit der Korrektur eines altmodischen PHP-Skripts beginnt?Wie behebt man ein altes PHP-Skript mit Codierungsstil

Vor ein paar Tagen erhielt ich ein Angebot für die Entwicklung eines alten PHP-Projekts, und altmodisch meine ich, dass die Struktur keine OOP-Codierungsmethode verwendet und keinen definitiven Rahmen hat.

Ich bin verwirrt, wo ich anfangen soll, und wollte wissen, welche Methoden es gibt, um ein altes Skript zu entwickeln.

Hinweis: Sie wollen nicht viel Geld ausgeben, um ein neues Projekt zu starten.

Welche Methoden würden Sie vorschlagen, um ein altes PHP-Skript zu aktualisieren?

+2

Ich glaube nicht, Nicht-OOP und Non-Framework ist überhaupt ein Fehler in sich. Sie können perfekt gute PHP-Apps ohne diese beiden schreiben, und wenn die Anwendung funktioniert und vernünftig wartbar ist, ist weder OOP noch Framework ein guter Grund, den Code zu ändern. Schlechte Sicherheitspraktiken (zB systemische SQL- und HTML-Injections) und schlechte Wartbarkeit (viele PHP-Apps leiden unter fehlenden Kommentaren, schlechter Mischung von Aktionslogik mit Präsentation, keiner Struktur, Einrückung oder konsistentem Vorgehen) - das sind gute Gründe aktualisieren/neu schreiben. – bobince

+0

Ich schreibe gerade etwas in PHP und ich verwende kein Framework oder OOP. Ich denke Frameworks sind nur ein zusätzliches Gepäck in einer kleinen Anwendung und ich habe mich nie darum gekümmert, wie OOP in PHP gehandhabt wurde. Aber ich bin auch nicht einer von denen, die denken "Eine Anwendung ist nicht richtig strukturiert, wenn es nicht mindestens 5 Grad der Vererbung gibt, wo der eigentliche Code, der die Arbeit macht" – Earlz

Antwort

2

Es hängt davon ab, was Sie mit "alt" meinen. Alt wie geschrieben für PHP 4? Oder alt wie in Nicht-OOP? (Oder beides?)

Alt wie in PHP4:
Solange man durch sie sichten und entweder Warnungen unterdrücken oder tatsächlich beheben veraltete Funktion ruft alles in Ordnung sein sollte. Das ist einfach nur langweilige Arbeit. Einfach und billig.

Alt als in Nicht-OOP:
Ein theoretisch eine sehr stabile und skalierbare App ohne OOP oder eine bestimmte MVC (oder anderen) Rahmen entwickeln könnte. In der Tat, wenn die App klein ist, gibt es keinen Grund, die Spaghetti und Fleischbällchen Komplexität von OOP oder ein Framework hinzuzufügen. Es ist schwierig und teuer, alles in OOP mit einem Framework neu zu schreiben. Und wahrscheinlich Overkill.

+1

Es heißt nicht-OOP in der Frage . –

1

Können Sie uns mehr Details geben, vielleicht ein Beispiel.

Sogar der prozedurale Code enthält Elemente von OOP. Sie können Variablen und Prozeduren identifizieren, die sich auf dieselbe Entität beziehen. Du könntest es umschreiben, aber es wird schwer für sie sein, einen Wert darin zu finden, besonders wenn sie sparsam sind, wie du vorgeschlagen hast.

0

Vielleicht rechts Ihr Code sieht nun wie folgt alt text

Und Sie wollen, dass es wie dieser es

alt text

Nun, wenn ihr nur ein Skript und nicht das ganze Projekt sieht i umwandeln würde zum OOP Kodierungsstandard.

+0

Hat PHP sogar ein 'goto' Schlüsselwort? – Earlz

3

Joel Spolsky writes:

„[Netscape gemacht] die einzige schlimmsten strategischen Fehler, dass jede Software-Unternehmen machen: Sie beschlossen, den Code von Grund auf neu zu schreiben.“

Also, was auch immer Ihre Vorgehensweise ist, Priorität ist die Arbeit mit dem vorhandenen Code. Refactoring ist eine der besten Methoden, die Sie verwenden können.

Was können Sie nicht tun, wenn die Codebasis nicht aktualisiert wird, die Sie unbedingt müssen? Wie viel und was genau müssen Sie aktualisieren, damit diese Aktion möglich ist? Betrachten Sie diese beiden Fragen.

1

Wenn ich dies tue, ist es ein mehrstufiger Prozess.Normalerweise gibt es ein vorhandenes Produkt, das weiterläuft. Von Grund auf neu zu schreiben ist selten eine Option, auch wenn Sie es schließlich beenden.

  • Begin Handbuch enthalten Aussagen zu Graben und einen Autoloader implementieren, wo dies möglich
  • erstellen Hilfsskript magic quotes & Globals Register zu simulieren (viele Pässe dauert). Dies ist so, dass Sie es in PHP ausschalten können, während Sie den bestehenden Code beibehalten
  • Allmählich entfernen Sie übermäßige strip_slashes oder add_slashes Aufrufe, falls zutreffend. Das Hilfsskript erlaubt Ihnen, dies pro Datei zu tun.
  • Stellen Sie sicher, dass Ihre Variablen korrekt definiert sind
  • Trennen Sie Ihren Präsentationscode. Betrachten Sie Smarty oder alternative Template-System
  • Bewegen Sie den DB-Aufrufe zu PDO und Verwendung Parameter Ersatz für alles
  • Blick auf den Code und denken über eine Front-Controller

Ausdrückens ich dann am Projekt betrachten und bestimmen, wie ich die Logik selbst verändern werde. Wenn es überhaupt keine Funktionen gibt, besteht meine erste Aufgabe darin, gängige Verhaltensweisen in statische Methoden zu überführen. Holen Sie so viel Wiederverwendung ohne zu viel Mühe, also bin ich noch nicht mit der Organisation beschäftigt.

Nachdem die Redundanz reduziert ist, dann komme ich zur Organisation. In dieser Phase beginne ich, meine Klassenmodelle zu planen und die Funktionen in saubere Methoden umzuformen. Dies ist auch die Zeit für automatisierte Tests (phpunit). Sobald ich einigermaßen zuversichtlich bin, füge ich einige Controller hinzu und integriere die Vorlagen, dann bin ich fertig ... sperre ein oder zwei weitere Pässe.

Für mich geht es darum herauszufinden, wo ich bin, wo ich sein möchte und einen Plan zu machen, der in mehreren kleinen Schritten ausgeführt werden kann. Jeder hat seine eigenen Ziele, also gibt es keinen magischen Plan außer dem eigenen.

+0

Ich mag diese Antwort, es ist etwas: D Erzähl mir mehr über PDO – Ghazanfari

+0

PDO ist eine OOP Datenbankbibliothek für PHP. Es bietet Iteratoren, vorbereitete Anweisungen und eine konsistente Schnittstelle. http://php.net/PDO – pestilence669

0

Lesen Sie ihren Code. Rede mit ihnen.

Sehen Sie sich die gewünschte Änderung in Bezug auf den vorhandenen Code an. Rede mit ihnen.

Entscheiden Sie, wie wenig davon Sie ändern, was Sie wollen. Rede mit ihnen.

Tun Sie das. Rede mit ihnen.

Wenn sie nach Funktionalität fragen, die einfacher durch Umschreiben als durch Modifizieren erledigt werden kann, tun Sie das.

Arbeiten Sie mit einer IDE, die beim Refactoring helfen kann.

+0

so dass Sie mich vorschlagen, mit diesen dummen Geschäftsleuten zu sprechen, ist mein Hauptziel, dieses Projekt zu sichern und es in einer Weise zu entwickeln, dass ich das Projekt stabilisieren kann – Ghazanfari

+0

Sie können das sicher nicht tun ohne ihre Unterstützung. Und Sie haben etwas über "Hinweis: Sie wollen nicht viel Geld ausgeben, um ein neues Projekt zu starten." Diese Art von Aktivität ähnelt dem Projektmanagement und nicht dem Programmieren. BTW: Sie können unmöglich "dumme Geschäftsleute" sein, wenn sie Geld für das Programmieren haben und genug wissen, um nicht zu viel Geld auszugeben! Sei vorsichtig, als "dummer Programmierer" gesehen zu werden, der keine einfache Veränderung vornehmen kann. – Don

Verwandte Themen