Facebook
Twitter
Google+
Kommentare
5
Über den Autor
Da wir jeden Tag mit einer Menge Legacy Code hantieren, gehört Refactoring zu den Werkzeugen die uns die alltäglichen Aufgaben erleichtern. Natürlich nimmt man in so einer Situation jede Hilfe entgegen, ...
WeiterlesenWir haben Mittwoch und ich habe diese Woche noch nichts dazugelernt. Ich glaube meine Theorie vom Montag war also nicht ganz so richtig. Aber wie Cem schon gesagt hat, man sollte sich seine Fehler eingestehen, ...
WeiterlesenDanke, dass du einen Link hinzufügen möchtest. Sobald du dieses Formular ausgefüllt hast, wird einer unserer Moderatoren informiert, der sofort losrennt und den Link überprüft. Falls er ihn gefalällt - und davon gehen wir aus - wird er mit ins Programm genommen. Da wir die Leser des Blogs nicht mit tollen Links überlasten wollen, kann es aber sein, dass dein Link erst nach ein paar Tagen live geht.
Vorschlag absenden AbbrechenVielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen
Wir sind immer auf der Suche nach guten Links. Helft uns sie zu finden.
Link vorschlagenWer über neues auf dieser Seite informiert werden will, der sollte uns auf Facebook folgen. Es lohnt sich!
Ich bin mir nicht sicher wo ran es liegt, aber ich kann weder in Opera, noch im IE oder FF den Full Screen Modus aktivieren – das ist stpätestens bei den Codebeispielen ein wenig schade – wäre schön, wenn man das beheben könnte …
Kann ich bestätigen. Habe den Link hier gefunden: http://blog.slideshare.net/2006/12/19/slideshare-full-screen-not-working-check-your-popup-blockers/ aber ich selbst bekomme ich es auch nicht zum Laufen.
Ja, nettes Beispiel – ABER: der Code der im Refactoring gezeigt wurde ist eigentlich bereits erstaunlich sauber.
Dabei war am Anfang noch die Rede von: „no coding standards, no documentation, no template system, nobody cared about security, often changed, never refactored“. Davon sieht man anschließend leider gar nichts mehr!
Jetzt lass dich mal nicht lange bitten, sondern mach deine Trickkiste auf.
Greif doch die eigenen Worte wieder auf: man nehme einen wilden Mix aus HTML+JS+CSS+PHP ohne Dokumentation, keine sprechenden Variablen, bunte Mischung aus Deutsch und Englisch, Copy&Paste-Programmierung und alles ohne OOP. Vielleicht wurden als „Sahnehäubchen“ noch „Funktionen“ über include(„foo.php“) realisiert? Register-globals gehört natürlich auch dazu.
Wie wäre es dazu noch mit einem klassischen Datenbankchaos? Falsch verwendete Datentypen, Inkonsistenzen, unklare Kardinalitäten, keine Fremdschlüssel. Natürlich als Folge davon ellenlange SQL-Abfragen, von denen keiner weiß, warum sie 240 Sekunden lang laufen, um 200 Datensätze zu holen.
Also: dann lass dich nicht lange bitten und tue ein bisschen Butter bei die Fische! Wie analysierst du einen großen Haufen Matsch und wie räumst du danach den Saustall auf? Welche Methoden benutzt du zur Code-Analyse und Reverse-Engineering? CodeSniffer? Copy&Paste-Erkennung? Wertebereichsanalyse und (Re-)Migration der Daten? Suche über RegEx?
Variablen umbenennen, Methoden und Klassen zerlegen, Kohäsion und Kopplung: diese Einstiegsdrogen bekommen wir überall geboten.
Unser erstes Problem ist schon mal, dass wir den Chef überzeugen müssen, dass ein Refactoring notwendig ist, obwohl es Geld kostet und das Programm hinterher nicht anders aussieht oder funktioniert als vorher. Ja, was noch viel schlimmer ist: er dafür auch keine Rechnung stellen kann.
Wie reagierst du, wenn die BWLer im Management dir sagen: „Aber warum denn – es hat doch all die Jahre gut funktioniert!“
@Tom: Dein Kommentar hat das Potential für viele Artikel. Ich schau mal was ich machen kann.
Hi Tom,
dein Kommentar ist echt gut. 🙂
Tools, die wir verwenden sind u.a. der PHP_CodeSniffer, phploc, phpcpd, den PHP_CodeBrowser, Padawan und den Zend Code Analizer. Ganz wichtig ist auch Zeit und Mut, auch mal über längere Zeit schlechten Code noch zu behalten, bis man eine sinnvolle Verbesserung hat. Refactoring dauert einfach und geht nur in kleinen iterativen Schritten.
Viele Grüße
Thorsten
P.S.: Der Talk war von mir. 😉