Ich bin nur ein Junior-Entwickler, aber mein Job zwingt mich, mit wirklich schrecklichem PHP-Code zu arbeiten (denken Sie an den schlechtesten PHP-Code, den Sie gesehen haben, und denken Sie dann an doppelt so schlechten Code). Normalerweise versuche ich, Fehler zu beheben und mit der Codebasis zu kämpfen, um neue Funktionen hinzuzufügen. Manchmal muss ich die Dinge so schnell wie möglich zum Laufen bringen, was meistens mit schmutzigen Hacks einhergeht.
Das Produkt war zuvor Open Source und ich befürchte, dass es in Zukunft Open Source werden könnte. Ich würde mich schämen, wenn jemand (insbesondere potenzielle Arbeitgeber) neben einigen Änderungssätzen meinen Namen finden könnte. Was kann ich tun, um meinen guten Namen zu schützen?
Ich bin mir nicht sicher, ob dies relevant ist, aber ich möchte hinzufügen, dass weder mein Chef noch meine Kollegen zugeben möchten, dass der Code schlecht ist, aber ich bin nicht sicher, ob ich ihnen die Schuld geben kann - für viele von ihnen ist dies ihr erster Job.
quelle
Antworten:
Rom wurde nicht an einem Tag erbaut, aber Sie können ein guter Pfadfinder sein. Lassen Sie den Code bei jeder Berührung besser als zuvor. Es dauert nicht allzu lange, um bei der Arbeit vernünftige Funktionsnamen, gute Codierungsstandards und anständige Kommentare zu verwenden.
Ich denke, die Gefahr besteht darin, zu denken, es sei alles oder nichts. Nur weil Sie nicht die Zeit damit verbringen können, eleganten Code zu schreiben, heißt das nicht, dass Sie aufgeben und Müll schreiben müssen.
quelle
Every time you touch the code, leave it better than it was before.
Stimmen Sie S.Lott von den Kommentaren zu * (einmalig :) Niemand zwingt Sie, schlechten Code zu schreiben. Die Sache ist, junior dev. Oft (diese Seite ist auch schuld daran) verirren Sie sich in bewährten Methoden, "schönem Code", ... wie auch immer Sie es nennen möchten ... und sie werden nicht viel erledigt. oder sie erledigen das, verschwenden aber viel Zeit. Indem man ihnen sagt, dass sie schlechten Code schreiben sollen (das ist Code, der auch funktioniert), bringt man sie dazu, etwas zu liefern. Mit der Zeit hat ein (inzwischen nicht mehr) Junior-Entwickler sehr schnell eine schnelle und schmutzige Lösung gefunden, verbringt aber den Rest der Zeit damit, sie zu verbessern. Und mit der Zeit lernen Sie mehr und irgendwann liefern Sie schnelle und schmutzige Lösungen, die eigentlich guter Code sind.
Aber wenn Sie Ihren Weg gegangen wären und von Anfang an versucht hätten, perfekten Code zu schreiben, hätten Sie höchstwahrscheinlich viel Zeit verbracht und fast nichts getan.
Also ... schlechten Code schreiben, ... viel davon ... Code, der kaum funktioniert, und dann ITERIEREN. Jede Iteration ein bisschen besser!
Niemand hat beim ersten Mal die perfekte Lösung geschrieben.
* Wäre es kürzer, wäre es ein Kommentar gewesen.
quelle
Codekommentare sind dein Freund hier.
Wann immer Sie das Gefühl haben, aufgrund von Druck einen billigen Hack schreiben zu müssen, sagen Sie einfach etwas wie: "Dieser Code macht X aus Zeitgründen. Idealerweise würde ich stattdessen Y tun. - Beschämt Eins, 5. Juli 2011"
Dann werden potenzielle Arbeitgeber erkennen, dass Sie es vorziehen, guten Code zu schreiben, aber Sie sind auch bereit, Ihren Codierungsstil an die geschäftlichen Anforderungen anzupassen. Die meisten Arbeitgeber werden beides als gute Dinge ansehen.
quelle
Es kommt darauf an, wie sie dich zwingen.
Nach meiner Erfahrung gibt es zwei Möglichkeiten:
Sie fühlen sich durch einen engen Zeitplan, einen alten Code usw. gezwungen.
In diesem Fall liegt es, wie die meisten anderen Antworten bereits sagen, an Ihnen, „auf Coolness zu optimieren“. Sie haben möglicherweise nicht die Zeit, die Codebasis in MVC umzuschreiben, aber als ersten Schritt können Sie beispielsweise aufhören, Ihre SQL von Hand zu kleben, und stattdessen ein nettes schreiben
execute_sql($query, $params)
, das die Grundlage für Abstraktionen wiefetch_customer($filter_params)
usw. bildet. Denken Sie daran, alles Gute Letztendlich gibt es Praktiken, bei denen Ihr Chef ein Produkt früher bekommt, sodass es nur einen Konflikt darüber gibt, wie viel Zeit in die Zukunft investiert werden muss, und nicht in das Jetzt.Wenn Sie den richtigen Kontext festlegen ("innerhalb von 6 Monaten, ohne zusätzliche Zeit zu haben, habe ich den monolithischen Code an MVC überarbeitet"), sollten Sie Ihren Namen auf dem Code belassen und versuchen, stolz zu sein wie ein Therapeut, der ein Schlaganfallopfer unterrichtet sage noch einmal einzelne wörter.
Sie werden ausdrücklich angewiesen, es auf eine Art und Weise umzusetzen, die Sie für ungeeignet halten
Der Versuch, die Ansicht vom Modell zu trennen, überlebt die Überprüfung nicht, weil "es zu kompliziert ist, warum machen Sie nicht einfach nur SQL-Abfragen?". Sie werden
execute_sql
eingemacht, weil "ein Programmierer mit Disziplin das nicht braucht".Dieser Fall ist zum Kotzen. Nach meiner Erfahrung handelt es sich in der Regel um Mikromanagement und Teamleiter, die aus politischen Gründen und nicht wegen ihrer Erfolge befördert wurden. Das eigentliche Problem ist, dass Sie für etwas (den Code) verantwortlich sind, das Sie nicht kontrollieren können (Sie müssen es auf ihre Weise tun). Die beste Lösung wäre, die Grundursache zu lösen (dh, Sie werden wie ein Grunzer behandelt). Die zweitbeste (und meiner Erfahrung nach die übliche) Lösung ist, aufzuhören.
Der Vorteil ist, dass in diesem Szenario Ihr Name wahrscheinlich sowieso nicht veröffentlicht wird, da der Teamleiter den Verdienst für jeden Erfolg auf sich zieht.
quelle
Ich bin mir ziemlich sicher, dass Ihr Chef von Ihnen verlangt, dass Sie schnell etwas liefern, aber nicht, dass Sie zusätzliche Anstrengungen unternehmen, um es absichtlich schlecht zu machen. Das heißt, wenn Sie die Wahl zwischen wirklich schlechtem Code und etwas weniger schlechtem Code haben und die Implementierung beider Optionen gleich lange dauert, entscheiden Sie sich für die etwas weniger schlechte Option. Das ist die kurzfristige Lösung und erfordert keinerlei Aufwand.
Sprechen Sie langfristig mit Ihrem Chef. Erläutern Sie, wie Sie durch das Investieren von 15 Minuten hier Stunden sparen können. Stellen Sie sicher, dass Sie überzeugende Beispiele haben - nicht den Typ "wenn ich dies und das hier mache, hoffe ich, dass ich nächstes Jahr das andere machen kann", sondern "schauen Sie, hier habe ich das gemacht und weil" davon habe ich drei stunden gebraucht, um das problem dort zu finden; wenn ich es so und so gemacht hätte, wäre der fehler sofort aufgetaucht ". Eine Warnung hier: Während sich eleganter und wartbarer Code viel besser und effizienter anfühlt, ist dies manchmal nicht der Fall. Es gibt Situationen, in denen eine schlampige Schnellreparatur durchaus gerechtfertigt ist: Manchmal schreiben Sie Code für den einmaligen Gebrauch, manchmal halten Sie einen veralteten Müll am Leben und warten auf die echte Sache. manchmal ist der Nutzen einer richtigen Lösung nicht
Wenn alles andere fehlschlägt, suchen Sie einen anderen Job.
quelle
Niemand zwingt dich, schlechten Code zu schreiben. Sie können diese Situation umkehren und positiv ausdrücken. Pionierwechsel bei Richtlinien und Verfahren. Und Sie können auch nicht immer der "Ja" -Mann / Frau sein. Wenn sie vor dem Ende des Tages angeben, dass sie Funktionalität benötigen x , sagen Sie ihnen, dass dies nicht machbar ist, und begründen Sie, warum dies tatsächlich nicht der Fall ist. Wo es ein Problem gibt, bieten Sie Lösungen an. Nicht nur ein blindes Auge, oder schlimmer noch ... noch dazu.
Ihr Entwickler-Shop ist nicht der erste, der strenge Fristen einhält, aber dennoch den Wunsch hat, ausgereiften Code zu pflegen.
quelle
Jedes Unternehmen muss ein Gleichgewicht zwischen dem Schreiben von brillantem Code mit umfassenden Dokumentationen und Komponententests und der Markteinführung von Produkten in einem angemessenen Budget und Zeitrahmen finden.
Der beste Code der Welt spielt keine Rolle, wenn er vor seiner Veröffentlichung veraltet ist.
Pragmatisch zu sein bedeutet, dieses Gleichgewicht zu finden. Eine rasche Behebung von Problemen kann derzeit kommerziell unerlässlich sein. Das bedeutet jedoch nicht, dass dies immer der Fall sein wird.
Es braucht viel Erfahrung (mehr als die meisten Programmierer jemals), um dieses Gleichgewicht herzustellen. Es ist sehr einfach, sich für beide Extreme zu entscheiden. Einen Mittelweg zu finden ist schwieriger.
Ich sage nicht, dass Ihr Chef Recht hat. Als Programmierer besteht die Versuchung, ständig schönen Code zu erstellen, der kommerziell nicht realisierbar ist. Wenn Sie sich dieser Versuchung bewusst sind, können Sie erkennen, dass einige dieser Hacks nicht so schlimm sind.
Der meiste Code enthält nach einiger Zeit Hacks für bestimmte Situationen, die zu kostspielig waren, um sie in ein allgemeines Framework umzugestalten.
quelle
Ich möchte hinzufügen, dass Sie nicht einfach so weitermachen sollten, wie Sie es jetzt tun, nichts sagen und nur hacken und hacken.
Sie müssen aufstehen und auf konkreten Code zeigen und ihnen sagen, was daran scheiße ist. Seien Sie genau und verwenden Sie Codemetriken, um Ihre Ansprüche zu sichern. Nichts ist peinlicher, als zu behaupten, ein Code sei schlecht, obwohl Sie nicht verstanden haben, was getan wurde.
Ich bin sicher, dass es viele Tools gibt, die kostenlos für die PHP-Code-Analyse zur Verfügung stehen. Http://en.wikipedia.org/wiki/Code_analysis
Auch das natürlich http://en.wikipedia.org/wiki/Code_smell
Lesen Sie es nach, fassen Sie zusammen, was Sie in Ihrer Anwendung finden, und listen Sie natürlich Alternativen auf . Es ist eine schlechte Praxis, einfach aufzustehen und zu rufen, "Ich mag es nicht, wie das gemacht wird", ohne einen alternativen (vorzugsweise) besseren Weg zu präsentieren, um es zu tun.
Schnelle Hacks kosten Geld. Und sehen Sie es nicht ganz negativ - Sie können jetzt viel von diesem Job lernen und von den Erfahrungen profitieren, die Sie jetzt in Ihrem nächsten machen.
hth
quelle
Vor allem verwenden Sie eine Art Quellcodeverwaltung, oder? Wenn nicht, fangen Sie dort an. Es hilft Ihnen zuerst und wird vom Rest des Teams schnell adoptiert.
Wenn Sie die Quellcodeverwaltung haben, sollten Sie Ihren Namen nicht in den Code einfügen, sondern nur den Namen Ihres Unternehmens. In fehlerhaftem Code ist es üblich, einen Versionsverlauf in die Kommentare oben in den Dateien einzufügen. Dies wird besser an die Quellcodeverwaltung delegiert.
In Bezug auf die Codequalität können Sie dies nicht als Big-Bang-Ansatz ändern. Fügen Sie nach und nach neue Ansätze zu verschiedenen Themen hinzu. Wenn Sie es richtig machen, sparen Sie Zeit und verbessern die Gesamtqualität.
Um Ihnen ein Beispiel zu geben: Ich war einmal mitten in einem Projekt mit einer Perl / CGI-Anwendung, in der der gesamte HTML-Code enthalten war. Die gesamte App befand sich in einer einzigen Datei ohne klare Struktur. Nichts wurde versioniert. Ich begann mit der Konfiguration eines CVS-Repos (zu diesem Zeitpunkt noch kein SVN verfügbar) und stellte dem Kunden ein Webinterface zur Verfügung. Zuerst habe ich die Aufträge meiner Kollegen selbst ausgeführt. Dann habe ich alle Methoden in verschiedene Module (Dateien) aufgeteilt. Zu diesem Zeitpunkt begannen die Kollegen, CVS einzuführen. Dann habe ich den HTML-Code aus dem Code entfernt. Jedes Mal, wenn ich einen Teil des Codes ändern musste, nahm ich mir etwas Zeit, um einen Teil zu überarbeiten. Am Ende war die Entwicklungsgeschwindigkeit so stark gestiegen, dass der Kunde äußerst zufrieden war. Sie forderten eine kosmetische Änderung an und anstatt dass wir ihnen sagten "es wird 2 Tage dauern",
Dieser Ansatz funktioniert jedoch nur, wenn Sie den gesamten Code gut genug beherrschen. Wenn Sie das Gesamtbild nicht verstehen und einige Teile der Anwendung unverständlich bleiben, wird dies Ihre Arbeit sehr erschweren.
Eine letzte Sache, ein vollständiges Umschreiben ist manchmal die einzige Lösung, aber es ist normalerweise sehr schwierig, die Kosten für das Management zu rechtfertigen.
quelle
Da Sie ein Junior-Entwickler sind, ist dies eigentlich eine gute Sache. Wenn Sie sich mitten in einem großen Durcheinander von Code befinden, erfahren Sie weit mehr darüber, was Sie nicht tun sollten, als wenn Sie nur an perfekt 'sauberem' Code arbeiten würden. Nutzen Sie die Situation und lernen Sie, wie Sie den fehlerhaften Code umgestalten und ihn langsam in etwas Verwaltbareres umwandeln. Und beschweren Sie sich nicht, dass es so schnell wie möglich sein muss. Das ist der Punkt - lernen Sie, Code umzugestalten und zu bereinigen, während Sie Dinge innerhalb einer engen Frist erledigen. Schließlich kann jeder perfekten Code schreiben, wenn er unendlich viel Zeit zur Verfügung hat.
quelle