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.
Dem muss ich widersprechen. Es gibt viele Technologien, bei denen radioaktiver Code unvermeidlich ist. Das Zusammenspiel von Anforderungen, Marketing und CSS/HTML/JS kommt mir in den Sinn. Es gibt nie eine saubere Möglichkeit, Code zu schreiben, um dynamisch HTML mit beteiligtem CSS zu stylen, da CSS diese „Black Box“ ist, von der niemand wirklich versteht, wie sie funktioniert, und aus Angst, 470 Stellen auf einer Website zu beschädigen, wird sie mit !important-Tags in einer anderen CSS-Definition, die für dieses Element spezifisch ist, überschrieben. Oder schlimmer noch, direkt auf dem style des DOM-Elements.
Obwohl „radioaktiv“ ein wirklich cooler Begriff ist, scheint er mir hier nicht wirklich passend, da das, was Sie beschreiben, eher biologisch wie eine Krankheit wirkt, etwas Infektiöses.
Radioaktiv wäre besser für das Salzbergwerk geeignet. Es ist da, es ist eingedämmt, man sollte es nicht anfassen, aber es treibt viele Dinge an. Ähnlich wie ein Kernreaktor. (Das ist wirklich das, was ich bei dem Teil „Stellen Sie sich einen Kernreaktor vor“ sehe.)
Ich weiß nicht, ob Sie von der Energiewende in Deutschland gehört haben. Dieser erneuerbare Kram und was die Politik versucht, ihn zu retten, passt ziemlich gut zur radioaktiven Beschreibung. Ein hochfragiles System, das durch viele teils widersprüchliche Gesetze aufrechterhalten wird.
Ich plädiere für
Langweiliger Code
Radioaktiver Code
Erneuerbarer Code
Wenn Sie Google oder Twitch in Firebug öffnen. Das ist radioaktiver Code. Totale nukleare Winter.
Wie pflegen sie das überhaupt?