Die drei Arten von Code

Avatar of Robin Rendle
Robin Rendle am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Jedes Mal, wenn ich ein neues Projekt beginne, organisiere ich den Code, den ich mir ansehe, in drei Arten oder, wenn Sie so wollen, Kategorien. Und ich denke, diese Arten können auf jeden Codebestand, jede Sprache, jede Technologie oder jedes Open-Source-Projekt angewendet werden. Egal, ob ich HTML oder CSS schreibe oder eine React-Komponente erstelle, das Nachdenken über diese verschiedenen Kategorien hat mir geholfen herauszufinden, was refaktoriert und priorisiert werden sollte und was vorerst ignoriert werden kann.

Diese Kategorien: Langweiliger Code, Salzbergwerk-Code und Radioaktiver Code.

Ich werde es erklären.

Langweiliger Code

Langweiliger Code ist, wenn er beim Lesen völlig Sinn ergibt. Es gibt keinen Bedarf, ihn zu refaktorisieren, und er erfüllt seine Funktion auf eine Weise, die Sie nicht dazu bringt, sich in einen Fluss zu stürzen. Langweiliger Code ist guter Code. Er macht keinen Kickflip und versucht nicht, Sie zu beeindrucken. Sie können ihn verwenden, ohne noch mehr Code schreiben oder Hacks darauf aufbauen zu müssen. Langweiliger Code tut genau das, was auf der Dose steht, und verursacht niemals Überraschungen.

Diese Funktion ergibt Sinn, dieser Prop ist klar benannt, diese React-Komponente ist unkompliziert. Hier gibt es keine Schleifen in Schleifen, keine mentalen Verrenkungen.

Langweiliger Code ist jedoch fast unmöglich zu schreiben, da unser Verständnis davon fast immer unvollständig ist, wenn wir mit der Bewältigung eines Problems beginnen. Betrachten Sie nur, wie viele Überlegungen in das Styling eines einfachen Absatzes für Kontrast einfließen können. Um langweiligen Code zu schreiben, müssen wir gewissenhaft sein, wir müssen endlos refaktorisieren, und wir müssen uns über ein Gehalt am Monatsende hinaus um den Codebestand kümmern.

Langweiliger Code ist gut, weil langweiliger Code freundlich ist.

Salzbergwerk-Code

Dies ist die Art von Code, die verrückt ist und keinen Sinn ergibt. Es ist die Art von Code, die wir kaum lesen können, die aber so tief im Codebestand vergraben ist, dass sie sowieso fast unmöglich zu ändern ist. Aber! Sie sickert nicht in andere Teile unseres Codes, daher können wir sie größtenteils ignorieren. Sie mag nicht schön sein, und wir wollen sie wahrscheinlich nie wieder ansehen, solange wir leben, aber sie verursacht keine aktiven Schäden.

Diese Art von Code können wir größtenteils vergessen. Es ist die Art von Code, die gefährlich ist, wenn sie geöffnet und manipuliert wird, aber im Moment ist alles in Ordnung.

Die Schwierigkeit ist tief vergraben.

Radioaktiver Code

Radioaktiver Code ist das eigentliche Problem im Kern jedes Ingenieurteams. Es ist der Code, der uns davon abhält, zur Arbeit zu gehen. Es ist der Kram, der nicht nur schlecht ist, sondern unseren Codebestand aktiv vergiftet und alles mit der Zeit verschlimmert. Stellen Sie sich einen Codebestand als einen Kernreaktor vor; radioaktiver Code ist das Zeug, das den Behälter durchbrochen hat und nun in jeden Teil unseres Codebestands sickert.

Ein Beispiel? Für uns bei Gusto und im Designsystem-Team würden wir unsere Formular-Komponenten als radioaktiv betrachten. Jede Komponente verursacht weitere Probleme, weil wir die Komponente nie wie sie ist verwenden können; wir müssen sie hacken, um zu bekommen, was wir wollen. Jedes Mal, wenn jemand diesen Code verwendet, muss er noch mehr Code darauf schreiben, was die Dinge mit der Zeit verschlimmert, und es ermutigt jeden im Team, dasselbe zu tun.

In unserem Designsystem müssen wir, wenn wir eine Klassenbezeichnung zum div hinzufügen möchten, das ein Formularelement umschließt, in einer Komponente den Prop formFieldClass und in einer anderen wrapperClass verwenden. Es gibt einen propType namens isDefaultLayout und jeder setzt ihn auf false und schreibt benutzerdefinierte CSS-Klassen darauf. Mit anderen Worten, radioaktiver Code macht es uns nicht nur schwer, all diesen Unsinnscode zu verstehen, sondern er macht es auch zunehmend schwierig, andere Teile des Codebestands zu verstehen. Weil die Datei, die wir uns gerade ansehen, Abhängigkeiten von acht verschiedenen Dingen hat, die wir nicht sehen können. Das Ergebnis der Entfernung dieses radioaktiven Codes bedeutet, dass alles andere, was davon abhängt, geändert werden muss.

Mit anderen Worten, radioaktiver Code – wie unsere Formular-Komponenten – macht es unmöglich, dem Codebestand zu vertrauen.

Radioaktiver Code ist nicht nur schlecht für uns und unseren Codebestand, sondern auch schlecht für unser Team. Er fördert schlechte Gewohnheiten, Grausamkeit in Slack-Threads und verursacht nicht zuletzt schwer messbare Reibungen zwischen Teammitgliedern. Radioaktiver Code ermutigt auch andere Teams in einem Unternehmen, abtrünnig zu werden und neue Technologien in einen Codebestand einzuführen, wenn das Problem des radioaktiven Codes nicht die Technologie selbst ist. Jeder kann diese Art von Code schreiben, unabhängig von der Sprache, dem System oder dem Linting, wenn er dem Problem nicht genug Aufmerksamkeit schenkt. Oder wenn er versucht, ein bisschen zu schlau zu sein. Oder wenn er versucht, jemanden zu beeindrucken.

Wie beheben wir radioaktiven Code? Nun, wir müssen einen Kreis darum ziehen und den Wahnsinn eindämmen, der in andere Teile des Codebestands sickert. Dann müssen wir etwas völlig Heroisches tun: Wir müssen ihn langweilig machen.