Warum bist du ein schlechter PHP-Programmierer?

Wir haben alle unsere schlechten Gewohnheiten. In diesem Artikel gehen wir eine Liste der schlechten Praktiken durch, die es wert sind, sofort untersucht, neu bewertet und korrigiert zu werden.

Erneut veröffentlichtes Tutorial

Alle paar Wochen besuchen wir einige der Lieblingsbeiträge unserer Leser aus der gesamten Geschichte der Website. Dieses Tutorial wurde erstmals im Februar 2011 veröffentlicht.


Wer zur Hölle glaubst du, du bist??

Jedes Mal, wenn ich ein Projekt eröffne, das nicht mir gehört, geht ein wenig Angst einher, dass ich in eine Art Tempel des Schicksals vorgeht, gefüllt mit Falltüren, geheimen Codes und der einen Codezeile, auf der Änderung, bringt die gesamte App herunter (und schickt möglicherweise einen riesigen Felsblock durch einen engen Flur auf mich zu).

Wenn wir uns irren und alles in Ordnung ist, abgesehen von ein paar kleinen Unterschieden, wie ich es getan hätte, atmen wir erleichtert auf, rollen die Ärmel hoch und tauchen in das Projekt ein.

Aber wenn wir recht haben ... Nun, das ist eine ganz andere Geschichte.

Unser erster Gedanke beim Anblick dieses unheiligen Durcheinanders lautet in der Regel: "Wer zum Teufel glaubt dieser Kerl, dass er ist?" Und das zu Recht; Welche Art von Programmierer würde bereitwillig ein so unheiliges Durcheinander aus einem Projekt schaffen?


Die Antwort könnte Sie überraschen

Erstaunlicher Code ist die Ansammlung mehrerer kleiner Abkürzungen oder Zugeständnisse.

Ihr erster Instinkt könnte sein, davon auszugehen, dass der Mann, der das Projekt aufgebaut hat, ein Anfänger ist oder vielleicht nur ein Idiot ist. Das ist aber nicht immer so.

Meine Theorie ist, dass schrecklicher Code die Ansammlung mehrerer kleiner Abkürzungen oder Zugeständnisse ist - genauso oft, wie es das Produkt von Unerfahrenheit oder Dummheit ist. Dies macht die Temple of Doom-App viel gruseliger, denn wer sie gebaut hat, könnte genauso klug, klug und belesen sein wie Sie. Sie waren einfach nur faul oder versammelten sich in aller Eile, und jede dieser kleinen Abkürzungen summierte sich zu dem verwirrenden Alptraum, der gerade in Ihren Schoß fiel.

Das kann sogar beängstigend sein, dass irgendwann jemand Ihren Code geerbt hat und sofort in Tränen ausbricht.


Du bist besser als das, Baby!

Es schadet nie, Ihre derzeitigen Praktiken zu überprüfen und sicherzustellen, dass Sie keine Abkürzungen verwenden, die zum Verlust des Schlafes einer anderen Person beitragen könnten.

Nehmen wir uns ein paar Minuten und gehen einige gängige Abkürzungen, Zugeständnisse und andere schlechte Praktiken durch, um sicherzustellen, dass unsere Projekte keine Angst in die Herzen der Dorfbewohner bringen.


Sie planen nicht, bevor Sie mit der Codierung beginnen

Bevor Sie eine einzige Codezeile schreiben, sollten Sie einen soliden Angriffsplan haben.

Bevor Sie eine einzige Codezeile schreiben, sollten Sie einen soliden Angriffsplan haben. Dies hilft Ihnen dabei, auf dem richtigen Weg zu bleiben und vermeidet wandernden Code, der Sie später verwirrt, von einer anderen armen Seele ganz zu schweigen.

Ein Ansatz, der mir sowohl bei der Entwicklung als auch beim Kommentieren Zeit gespart hat, besteht darin, zunächst einen Überblick in die Kommentare zu schreiben:

 

Wie Sie sehen, weiß ich, ohne eine einzige Codezeile zu schreiben, fast genau, wie die Datei aussehen wird. Das Beste ist, dass Sie auf diese Weise eine gesamte Anwendung planen können, und wenn Sie an einen Punkt gelangen, an dem eine Funktion eine Funktionsanpassung an eine andere erfordert, Sie müssen lediglich den Kommentar ändern.

Es erfordert eine Verschiebung in der Art und Weise, wie Sie mit der Entwicklung beginnen, aber Ihre Projektorganisationsfähigkeiten werden durch das Dach gehen.

HINWEIS: Einige dieser Kommentare sind nicht notwendig. einige von ihnen werden sich ändern; andere müssen hinzugefügt werden - das wird erwartet. Das ist so, als würde man eine Gliederung für eine Zeitung schreiben oder eine Einkaufsliste schreiben: Sie halten Sie nur auf dem richtigen Weg, wenn Sie den Auftrag abschließen.


Sie kommentieren nichts

Das schlimmste Problem mit dem meisten Code, dem ich begegne, ist jedoch, dass er schlecht oder überhaupt nicht kommentiert ist.

Es macht mich traurig, dass ich das aufschreiben muss. Wenn etwas so einfach ist wie das Kommentieren, sollten wir uns nicht daran erinnern, etwas zu tun.

Das schlimmste Problem mit dem meisten Code, dem ich begegne, ist jedoch, dass er schlecht oder überhaupt nicht kommentiert ist. Dies ist nicht nur eine gute Zeit für meine anfängliche Einarbeitung in das Projekt, sondern es garantiert auch ziemlich genau, dass eine Korrektur, die mit einer unkonventionellen Methode gemacht wird, die mich zwangsläufig verwirrt. Wenn ich am Ende ein Refactoring durchführe, werde ich die App versehentlich brechen, da ich nicht auf die mildernden Umstände gestoßen bin, die die Korrektur erforderten.

Dieser Vorgang kann zwischen 10 Minuten und 6 Stunden dauern. (Und du hast mir das angetan, ich weiß wo du wohnst. Ich komme für dich.)

Also sag es laut:

ich, [gib deinen Namen an], schwöre hiermit in allen Situationen, in denen der Zweck des von mir geschriebenen Codes nicht sofort ersichtlich ist.

"Sofort augenfällig" bezieht sich auf Code, der nicht selbstdokumentierend sein kann (weil dies nicht sinnvoll wäre) und / oder keine wirklich einfache Aufgabe erfüllt. Stellen Sie sich das so vor: Wenn Sie länger als ein paar Sekunden an Ihre Lösung denken mussten, ist dies wahrscheinlich eine kurze Erklärung.

Um diesen Punkt zu veranschaulichen, werde ich ein Beispiel aus einem Artikel verwenden, den ich kürzlich für Anfänger geschrieben habe. Folgendes berücksichtigen:

 $ pieces = explodieren ('.', $ image_name); $ extension = array_pop ($ pieces);

Was macht das? Mussten Sie aufhören und darüber nachdenken? Wissen Sie immer noch nicht genau, was in Ihrem Computer gespeichert ist? $ extension?

Sehen Sie sich das Snippet noch einmal an, aber mit einem kurzen Kommentar:

 // Holen Sie die Erweiterung aus dem Bild Dateiname $ pieces = explode ('.', $ Image_name); $ extension = array_pop ($ pieces);

Fünf Sekunden auf einmal summieren sich groß.

Ein Blick auf diesen Code erfordert nun keine zusätzliche Gehirnleistung: Sie sehen den Kommentar, sehen den Code und müssen niemals seine Absicht in Frage stellen.

Es kann Ihnen nur fünf Sekunden der Kontemplation ersparen, aber wenn Sie eine komplexe App haben, summieren sich jeweils fünf Sekunden.

Also hör auf, Ausreden zu finden. Schreibe den verdammten Kommentar.


Sie opfern Klarheit für die Kürze

Gute Beispiele für die Aufklärung der Kürze sind unklare Variablennamen und das Ablegen der geschweiften Klammern.

Es ist eine universelle Versuchung, mit möglichst wenigen Charakteren etwas zu erreichen, aber Diese Versuchung gleicht einer Versuchung, nur ein Paar Unterwäsche zu haben: Sicher, die Wäsche wird schnell erledigt, aber die Probleme, die sich aus Ihrer Wahl ergeben enorm überwiegen die Vorteile.

Gute Beispiele für die Aufklärung der Kürze sind kurze, unklare Variablennamen (z. B. $ a - was macht $ a speichern?) und die geschweiften Klammern fallen lassen.

Lockige Zahnspangen von Kontrollstrukturen fallen zu lassen, ist eine besondere Begabung. Wenn Sie keine geschweiften Klammern mögen, wechseln Sie zu Python. In PHP ist es einfach zu einfach, die Bedeutung ohne sie zu verlieren.

Sehen Sie sich zum Beispiel diesen Satz geschachtelter if-else-Anweisungen ohne geschweifte Klammern an:

5) Echo "größer als 5!"; sonst Echo "Weniger als 5!"; sonst Echo "Größer als 10!"; Echo "
Noch eine Notiz. ";

Auf einen Blick sieht es so aus, als würde die letzte Zeile nur dann ausgelöst, wenn der Wert von $ foo ist größer als 10. Aber was tatsächlich passiert, ist ein Fall von unangemessener Einrückung; Die letzte Echoaussage wird auf jeden Fall ausgelöst
$ foo Shops.

Können Sie es herausfinden, wenn Sie es für einige Sekunden betrachten und wissen, dass if-else-Anweisungen ohne geschweifte Klammern nur die unmittelbar nächste Zeile betreffen? Na sicher.

Sollten Sie die Energie verschwenden müssen, um das herauszufinden? Absolut nicht.

Durch das Hinzufügen von geschweiften Klammern werden einige Zeilen hinzugefügt, die Anweisung wird jedoch trotz der ungeraden Einrückung ungemein klarer:

5) Echo "Größer als 5!";  else echo "Weniger als 5!";  else echo "Größer als 10!";  Echo "
Noch eine Notiz. ";

Ja, es ist eine gute Sache, Ihren Code kurz zu halten, aber nicht auf Kosten der Klarheit. Die zusätzlichen Zeilen lohnen sich, um sicherzustellen, dass niemand den Kopf gegen eine Tastatur stoßen muss, die versucht, Ihren Code zu durchsuchen.


Sie befolgen keine Kodierungsnorm

Wählen Sie einen Standard und bleiben Sie dabei.

Wenn Sie mit Ihrer Formatierung niedlich werden, wird Ihr künstlerischer Drang vielleicht befriedigt, was aber für niemanden gut ist. Wählen Sie einen Standard (ich empfehle den PEAR-Codierungsstandard) und halten Sie sich daran. Jeder wird es dir danken. (Einschließlich dich eines Tages.)

Vertrau mir. Ich war einmal dieser Typ - ich wollte einen "Unterschriftenstil" haben und habe viele Stunden damit verschwendet, meine abscheulichen Formatierungen später zu korrigieren. Es gibt eine Zeit, um anders zu sein, und eine Zeit, wie alle anderen es auch tun.

Denken Sie beim Programmieren wie eine gesprochene Sprache. Grammatik und Interpunktion gibt es aus einem bestimmten Grund: So können wir uns gut verstehen, wenn wir die Dinge aufschreiben. Stellen Sie sich Kodierstandards wie eine geeky Version von Strunk & White Elements of Style vor. Wenn Sie sich an die Richtlinien halten, verstehen die Leute, was Sie zu sagen versuchen, und nicht, dass Sie eine langweilige Person sind.


Sie duplizieren den Code

Du machst es falsch.

Versuchen Sie, jedes einzelne Teil Ihrer App als etwas zu betrachten, das sich irgendwann ändern muss. Wenn dies der Fall ist, müssen Sie mehr als eine Datei aktualisieren? Wenn Sie mit Ja geantwortet haben, ist es an der Zeit zu überprüfen, wie Sie Code schreiben.

Wenn der Code an mehreren Stellen in Ihrer App dasselbe tut, machen Sie ihn falsch.


Sie folgen keinem Entwicklungsmuster

Sie sollten beim Codieren immer eine Struktur haben.

Sie sollten beim Codieren immer eine Struktur haben. Ich möchte damit nicht implizieren, dass Sie dem MVC-Muster oder etwas Ähnlichem folgen müssen, aber ich meine, Sie sollten wissen, wie Komponenten zu klassifizieren sind und wohin sie gehen sollen.

Wenn Sie einem logischen Entwicklungsmuster folgen, werden viele Entscheidungen automatisch, und jemand, der in Ihren Code eintritt, muss nicht viel erraten, wenn Sie nach einer bestimmten Funktionalität in Ihrer Codebase suchen.

Es dauert nicht lange und Sie werden Ihre Apps wirklich klarstellen.


Du bist zu klug für dein eigenes Wohl

Die einfachste Lösung ist normalerweise die am besten geeignete

Es gibt eine feine Linie zwischen einer raffinierten und einer zu komplizierten Lösung.

Es ist immer verlockend, einige der schönsten neuen Tricks auszuprobieren, die Sie gelernt haben, aber wir müssen dem Drang widerstehen, eine komplexe Lösung in einen Raum zu zwingen, in dem eine einfache Lösung ausreicht.

Grundsätzlich ist die einfachste Lösung in der Regel die geeignetste. Du versuchst davon zu kommen Punkt A zu Punkt B - einen Umweg machen Punkt Awesome macht Spaß, fügt aber wirklich keine Vorteile hinzu.

Ihre süße Lösung stellt jedoch ein Problem dar, bei dem eine andere Person diese bestimmte Lösung möglicherweise nicht gesehen hat und einfach verloren geht. Das liegt nicht daran, dass sie auch nicht so schlau sind wie Sie. Wahrscheinlich, weil sie diesen Artikel nicht gesehen haben oder nicht versucht haben, ein quadratisches Konzept in ein rundes Problem zu bringen.

Machen Sie sich nicht dumm, sondern vergessen Sie nicht, die Dinge "nur für die Sache" zu komplizieren.


Du bist ein Wang

Vermeiden Sie es, Ihren Code um jeden Preis schwer verständlich zu machen.

Als ich zum ersten Mal in die Entwicklung kam, arbeitete ich mit einem Mann, der selbsternannter "Experten" -Programmierer war. Wann immer ich eine Frage zu einem Konzept hatte, gab er mir nie eine direkte Antwort. Um die Antwort auf meine ursprüngliche Frage zu erhalten, musste ich ein paar vorläufige Fragen beantworten, um "zu beweisen, dass Sie mit der Antwort umgehen können".

Dieser Kerl war auch wirklich gut darin, Code zu schreiben, der kryptisch, verschleiert und allgemein verwirrend war.

Dateien wie seine sind das Ergebnis von Programmierern, die meinen, sie müssten ihren Code schwer lesbar machen, um "die Idioten fernzuhalten".

Die allgemeine Philosophie dahinter lautet in der Regel: "Wenn Sie nicht klug genug sind, diesen Code zu verstehen, sollten Sie gar nicht erst dabei sein."

Dies ist ein zutiefst fehlgeleiteter und unsozialer Programmieransatz. Es ist eine sehr elitäre Sichtweise, und es zeigt, dass der Programmierer den Kontakt zu seinen Anfängerwurzeln verloren hat, als er selbst Hilfe brauchte.

Vermeiden Sie es, Ihren Code um jeden Preis schwer verständlich zu machen. Es macht Sie weder cooler noch intelligenter und fördert nicht den Respekt. Es macht dich nur zu einem wang.


Dude, worüber sprichst du??

Wenn Sie aufhören zu lernen, bleiben die Projekte, an denen Sie arbeiten, in der Zeit fest, in der Sie sich entschieden haben.

Zusätzlich zu den Abkürzungen und der allgemeinen Faulheit, die Sie weiter oben sehen, könnten Sie auch daran gehindert werden, sich ständig weiterzubilden und Fortschritte zu machen.

Die Technologie ändert sich nicht, weil die Community insgesamt gelangweilt ist und wir beschlossen haben, neu zu dekorieren. Die meisten neuen Technologien entwickeln sich, um bestehende Probleme effizienter und einfacher zu lösen. Wenn Sie den Fortschritt ignorieren möchten, müssen Sie den langsamen Prozess der Marginalisierung Ihres Skillsets beginnen.

Hier sind ein paar Dinge, die wir alle aufgeben können, um sicherzustellen, dass unsere Skillsets auf dem neuesten Stand sind, ohne dass wir unsere Wochenenden aufgeben müssen.


Sie versuchen alles selbst zu machen

Finden Sie heraus, welche dieser Programmierer einen ähnlichen Ansatz verfolgen, und lassen Sie sich von den großen Neuigkeiten informieren.

Sie können nicht mit der gesamten Community mithalten. Jeder, der jemals versucht hat, ein Abonnement für über 200 Tech-Blogs aufrecht zu erhalten, wird Ihnen sagen, dass dies nicht innerhalb eines angemessenen Zeitrahmens möglich ist.

Glücklicherweise gibt es in der Community diejenigen, die sich die Zeit nehmen, um den Fortschritt der Technologie zu beobachten und ihre Ergebnisse zu berichten. Wenn Sie sich die Zeit nehmen, um herauszufinden, welcher dieser Programmierer einen ähnlichen Ansatz und Stil hat, können Sie sich von den großen Neuigkeiten informieren lassen.

Das Ansehen von 2-5 dieser Blogger vom Typ "Early Adopter" kann aus verschiedenen Gründen vorteilhafter sein, als jeden Tech-Blog zu abonnieren, auf den Sie stoßen:

  • Wenn Sie ihrer Meinung vertrauen, werden sie Technologien für Sie prüfen.
  • Wenn eine Technologie in mehr als einem dieser Blogs auftaucht, sollten Sie sich ein paar Minuten Zeit nehmen, um mehr darüber zu erfahren, da sie offensichtlich beliebt ist.
  • In diesen Blogs finden Sie häufig ein schnelles Einführungs-Tutorial, das Ihnen den Kopfschmerz erspart, mit einer neuen Technologie von Null zu beginnen.

Zu den PHP-Bloggern, denen ich vertraue, gehören David Walsh und Chris Shiflett.


Sie befinden sich nicht außerhalb Ihrer Komfortzone

Ich möchte nur vorschlagen, dass Sie sich als Programmierer erfüllter fühlen und sehen, wie sich Ihre Talente weiterentwickeln, wenn Sie sich immer für die nächste Programmstufe entscheiden.

Wenn Sie nichts tun, was Sie herausfordert, stimmt etwas nicht. Die Suche nach neuen Herausforderungen innerhalb von Projekten macht das Programmieren am meisten aus (oder sollte es zumindest sein).

Versuchen Sie, sich die folgenden Fragen zu stellen, wenn Sie neue Projekte betrachten:

  • Gibt es eine neue Technologie, die mich interessiert??
  • Habe ich von einem besseren Weg gelernt, seit ich das letzte Mal ein Projekt wie dieses aufgenommen habe??
  • Gibt es eine bewährte Methode, die ich durchsetzen muss, um sicherzustellen, dass ich im gesamten Projekt folgen kann??

Denken Sie daran: Ich spreche hier nicht davon, etwas sehr Komplexes zu machen.

Es kann so einfach sein, sich an das Hinzufügen von Docblocks zu Ihren Objekten zu erinnern, oder so komplex, als wenn Sie Ihre App mit XMLRPC kompatibel machen, damit Benutzer einfacher Updates veröffentlichen können.

Versuchen Sie sich nicht einzuleben und überzeugen Sie sich, dass Sie alles gelernt haben, was Sie lernen werden. Dann wird es für Sie hässlich.


Du teilst nicht

Besprechen Sie Ihren Code immer mit Ihren Mitprogrammierern.

Der beste Weg zur Verbesserung besteht darin, Ihren Code mit Ihren Programmierkollegen zu besprechen. Dies kann auf mehrere Arten geschehen: Wenn Sie sich besonders aufgeschlossen fühlen, schreiben Sie ein Tutorial oder veröffentlichen Sie ein Open-Source-Projekt. Wenn Sie sich nicht mit etwas in dieser Größenordnung vertraut fühlen, könnten Sie sich vielleicht in einem Community-Forum aufhalten und den Neuankömmlingen Hilfe anbieten.

"Wie hilft es mir, den Noobs zu helfen?" du fragst. Normalerweise, wenn Sie eine Lösung veröffentlichen, die optimiert werden könnte, werden andere erfahrene Programmierer einsteigen und Optimierungen anbieten. Dieser Ansatz ist also ein doppelter Wahnsinn: Sie fördern nicht nur die Community, indem Sie Ihr Wissen Ihren Anfängern zur Verfügung stellen, sondern Sie schärfen Ihre eigenen Fähigkeiten, indem Sie Ihre Fähigkeiten hängen lassen, damit jeder Sie sehen und Ihnen bei der Entwicklung helfen kann.


Sie haben keine Nebenprojekte

Wenn Sie etwas Neues und Cooles entdecken möchten, das zu kompliziert ist, um in ein reales Projekt aufgenommen zu werden, können Sie am besten ein Nebenprojekt starten, das diese Technik verwendet.

Auf diese Weise können Sie in Ihrem eigenen Tempo und in Ihrer Freizeit weiterkommen und niemals riskieren, dass Sie eine Frist verpassen oder "falsch machen".


Wir sind alle schuldig

Wenn wir es richtig machen, sollten wir uns immer verbessern. Und die Logik sagt uns, dass es uns vorher schlechter ging, wenn wir jetzt besser sind. Und wenn wir dieser Argumentationslinie weit genug folgen, gab es einen Punkt, an dem wir schrecklich waren.

Ich weiß, dass ich entsetzt bin, wenn ich auf einen Teil des Codes zurückschaue, den ich in der Vergangenheit geschrieben habe.


Also… Hör auf damit.

Wir werden niemals perfekt sein. Wir können jedoch alles in unserer Macht Stehende tun, um sicherzustellen, dass wir uns so nahe wie möglich kommen.

Was sind Ihre Begleiter beim Umgang mit dem Code anderer Entwickler? Lass es mich in den Kommentaren wissen!