Wie ein CSS-Code-Review aussehen könnte

Avatar of Geoff Graham
Geoff Graham am

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

Viele Programmiersprachen durchlaufen vor der Bereitstellung eine Code-Überprüfung. Ob es sich um eine schnelle Übersicht, eine eingehende Peer-Review oder vollständige Unit-Tests handelt, Code-Reviews helfen uns, Code mit Zuversicht zu veröffentlichen.

Ich begann mir vorzustellen, wie ein CSS-Code-Review aussehen könnte. CSS kann auf verschiedene Arten geschrieben werden, und der beste Weg ist oft projektbezogen. Ich versuche definitiv nicht, mit einem solchen Beitrag dogmatisch zu werden, sondern lege stattdessen die Grundlage für einen Ausgangspunkt, um das Beste aus CSS herauszuholen, bevor es veröffentlicht wird.

Warum sollte CSS überhaupt überprüft werden?

Es ist nur fair, sich zu fragen, warum wir CSS überhaupt überprüfen sollten. Eine Überprüfung ist ein weiterer Schritt, der Zeit, Kosten und Mühe und all die anderen Dinge hinzufügt, die uns scheinbar davon abhalten, ein Produkt zu versenden.

Gleichzeitig ermöglicht uns eine Code-Überprüfung, einen Schritt zurückzutreten, unsere Kampfausrüstung abzulegen und unsere Arbeit ehrlich zu bewerten – oder sie jemand anderem zur frischen Perspektive zu übergeben. Das unterscheidet uns von den Maschinen und kann uns am Ende den Ärger ersparen, uns mit Fehler- und Leistungsbehebungen herumschlagen zu müssen, die hätten behoben werden können, bevor sie ausgeliefert wurden.

Hier gibt es viel mehr Vorteile, als nur vorbeugend Fehler zu beheben. Ich finde, dass das Aufteilen einer Überprüfung in spezifische Bereiche, die sich auf diese Vorteile konzentrieren, hilft, das Gespräch zu strukturieren und diese positiven Ergebnisse zu priorisieren. Die Vorteile für Sie mögen anders sein als die, die ich hier behandeln werde, aber dies sind diejenigen, zu denen ich immer wieder zurückkehre.

Bereich 0: Es erfüllt seinen Zweck

Lassen Sie uns hier nicht verweilen, aber auch nicht vergessen. Die erste Aufgabe von CSS ist es, die Seite so zu gestalten, dass sie aussieht, wie sie aussehen soll. Sie entspricht dem Mockup des Designers oder passt zum Styleguide oder was auch immer sie tun soll. Und sie kann dies mit variablen Inhalten tun (Titel und Inhalte unterschiedlicher Länge, Bilder unterschiedlicher Größe usw.). Wenn nicht, muss dies zuerst behoben werden.

Wenn das Design responsiv ist, stellen Sie sicher, dass das Design fließend und an jedem Breakpoint das tut, was es tun soll.

Bereich 1: Stil und Konsistenz

Das Ziel ist hier, sicherzustellen, dass CSS gut geschrieben, organisiert und dokumentiert ist. Diejenigen unter uns, die Projekte von anderen Entwicklern übernommen haben, kennen die Vorteile hier. Code, der eine konsistente Benennungskonvention verwendet und eine gründliche Dokumentation enthält, ist leichter zu durchdringen und bietet Anweisungen zur Wartung und Verbesserung des Codes in der Zukunft.

Zu stellende Fragen

  • Gibt es einen CSS-Styleguide für dieses Projekt? Wenn ja, folgt der Code diesem?
  • Ist der Code gründlich dokumentiert? Gibt es verwirrende Elemente, Eigenschaften oder Hacks, die einen anderen Entwickler daran hindern könnten, zu wissen, warum etwas so geschrieben wurde, wie es geschrieben wurde?
  • Gibt es offensichtliche Inkonsistenzen in der Benennung von Elementen oder in der Organisation ihrer Eigenschaften?

Verfügbare Ressourcen

  • CSS Lint: Ein hervorragendes Werkzeug, um Fehler oder Inkonsistenzen zu finden. Es ist sogar als Grunt- und Gulp-Task verfügbar, die konfiguriert werden können, um gegen eigene Regelsätze zu prüfen.
  • CSS Style Guides: Eine Sammlung von Styleguide-Beispielen, die als Inspiration für die Erstellung eigener Styleguides verwendet werden können.
  • Was macht gute Dokumentation aus?: Dave DeSandro erklärt, wie Dokumentation mit Marketing zusammenhängt.

Bereich 2: Browserkompatibilität

Sobald CSS organisiert und konsistent ist, wende ich mich normalerweise der Frage zu, wie es in verschiedenen Browsern und Geräten aussieht. Gut geschriebener Code ist eine Sache, aber er ist nicht viel wert, wenn er nicht funktioniert, wo und wann er soll.

Zu stellende Fragen

  • Welche Browser und Geräte unterstützt dieses Projekt? Haben wir Zugriff darauf zum Testen?
  • Gibt es Analysen für diese Website? Wenn ja, geben sie uns Einblicke, für welche Browser das Testen wichtiger ist?
  • Gibt es Fälle von "Hacks", die auf einen bestimmten Browser oder ein bestimmtes Gerät abzielen? Wenn ja, gibt es einen anderen Weg, sie zu umgehen? Sind sie gut dokumentiert?

Verfügbare Ressourcen

  • Can I Use: Ein zentrales Repository, um nachzuschlagen, welche CSS-Eigenschaften mit welchem Browser und welcher Version kompatibel sind.
  • Ghostlab: Eine App für synchronisierte Browser-Tests auf mehreren Geräten.
  • OpenDeviceLab.com: Eine interaktive Karte, um nahegelegene Geräte-Labore für Tests zu finden.
  • Einrichten eines Open Device Lab: Smashing Magazine befasst sich eingehend mit den Vorteilen von Geräte-Labs und gibt Tipps, wie man eines einrichtet.
  • Support vs. Optimierung: Brad Frost behandelt hervorragend den Unterschied zwischen den beiden und wie sich das auf die Art und Weise auswirken kann, wie Code geschrieben wird.
  • Dienstleistungen für Cross-Browser-Tests: Cross Browser Testing oder Browserstack.

Bereich 3: Spezifität

Jetzt ist es an der Zeit, zu beurteilen, wie spezifisch die Elemente im Code sind und ob es Möglichkeiten zur Refaktorierung gibt. Dies schafft eine verantwortungsvolle Kaskade von Stilen, bei der Elemente entweder so modular oder so spezifisch sind, wie wir es wollen.

Zu stellende Fragen

  • Werden IDs irgendwo verwendet? Wenn ja, reicht ein Klassenname stattdessen aus? Sagt der Styleguide dazu etwas?
  • Findet sich `!important` im Code wieder? Wenn ja, warum wurde es verwendet und kann der Code refaktorisiert werden, um seine Verwendung zu vermeiden?
  • Verlassen wir uns auf Präfixe, und wenn ja, sind die Präfixe so organisiert, dass für nicht unterstützte Browser ordnungsgemäße Standardwerte vorhanden sind?
  • Wie modular sind die Elemente? Halten sie einem "Kitchen Sink"-Test stand, bei dem sie alle im selben HTML-Dokument zusammen verwendet werden?

Verfügbare Ressourcen

Bereich 4: Preprocessor-Nutzung

Ignorieren Sie dies, wenn das Projekt keinen Preprocessor verwendet. Aber wenn es einen verwendet, gibt es sicherlich einige zusätzliche Dinge zu bedenken.

Zu stellende Fragen

  • Werden vorhandene Variablen dort verwendet, wo sie sollten? Wurden neue Variablen eingeführt? Wenn ja, sind sie sinnvoll und dokumentiert?
  • Wurden andere Abstraktionen (z. B. extends, mixins, loops, maps usw.) effektiv und in Übereinstimmung mit dem Rest des Codes verwendet?
  • Wird das neue CSS in die richtigen Partials platziert? Wurden neue Partials verwendet? Sind sie architektonisch sinnvoll?
  • Folgen sie etablierten Preprocessor-spezifischen Styleguides?

Verfügbare Ressourcen

Bereich 5: Leistung

Ich nehme die Leistung gegen Ende einer Überprüfung auf, nicht um sie zu schmälern, sondern um sicherzustellen, dass sie das i-Tüpfelchen unseres Überprüfung-Sundae ist. Performantes CSS ist oft eine Frage der Verfeinerung und wie es verpackt und serviert wird, daher scheint es passend, den Überprüfungsprozess abzuschließen – auch wenn die Leistung bei der Arbeit immer im Hinterkopf mitschwingt.

Zu stellende Fragen

  • Wie viel wiegt die endgültige CSS-Datei? Planen wir, sie zu minifizieren und zu gzippen (ja, bitte!), und wie groß ist der Gewichtsunterschied, wenn wir das tun?
  • Wie viele verschiedene Stylesheets laden wir (über `` oder natives `@import`)? Können wir diese Anzahl reduzieren? Können sie bedingt geladen werden? Asynchron?
  • Wir cachen CSS in der Produktion, oder?

Verfügbare Ressourcen

  • CSS Stats: Geben Sie die URL einer Website ein und erhalten Sie eine Fülle von Statistiken, einschließlich eines Berichts über alle verwendeten Schriftarten und Farben.
  • CSS Dig: Sehr ähnlich wie CSS Stats, aber als praktische Chrome-Erweiterung verpackt.
  • unCSS: Ein Task-Runner, der ungenutztes CSS entfernt, indem er es mit dem HTML- und JavaScript-Markup vergleicht. Verfügbar für Grunt, Gulp und Broccoli.
  • Critical CSS: Ein weiterer Task-Runner, der jedoch basierend auf dem HTML-Markup für eine gegebene Seite individuelle CSS-Dateien erstellt. Diese Optimierung wird von Google PageSpeed Insights konsequent empfohlen.
  • loadCSS: Eine Funktion zum asynchronen Laden von CSS

Zusammenfassung

Ich würde definitiv nicht sagen, dass jede hier erwähnte Frage und jedes Werkzeug für alle Projekte notwendig oder auch nur relevant ist. Tatsächlich gibt es wahrscheinlich noch mehr Fragen und Werkzeuge zu bedenken. Gibt es Fragen, die Sie routinemäßig stellen, bevor Sie CSS veröffentlichen? Wo würde zum Beispiel die Barrierefreiheit für Sie Platz finden? Bitte teilen Sie es mit!

Denken Sie auch daran, dass das Ziel der Prüfung unseres Codes nicht darin besteht, ihn perfekt zu machen. Wir gehen aus vielen Gründen Kompromisse bei CSS ein (ob beabsichtigt oder nicht), und am Ende des Tages reicht es mehr als aus, einfach zu versuchen, eine gute Arbeit zu leisten, und dies ist Teil dieser Bemühungen.