Wer kennt es nicht – Studienkollegen, die damit prahlen, dass Projekt X aus hunderten Millionen Zeilen Code besteht.
Dabei habe ich nirgends im Studium gelernt, dass wir in unserem Programmiererleben so viel wie möglich Code produzieren müssen. Meine Professoren haben auf komplett andere Ziele Wert gelegt: Lesbarkeit, Wartbarkeit, Flexibilität des Codes z.B. wenn er mit anderen Datentypen verwendet wird, Wiederverwendbarkeit, Sicherheit, Korrektheit, Laufzeit-Performance uvm.
Noch besser: Angenommen, man will „sicheren Code“ schreiben, dann ist es nur hinderlich, wenn es sich um Millionen Zeilen von Code handelt. Schließlich muss man für jede einzelne Code-Zeile beweisen, dass sie das Programm nicht zu einer Fehlfunktion bringen kann.
Um die Lesbarkeit von Code zu erhöhen, kann das Programm gerne mal länger werden. Immerhin tut es dem Compiler nicht weh, wenn die Funktion „toggleFullscreen“ und nicht „tgfs“ heißt.
Doch Spaß beiseite: Die Welt benötigt nicht viel Code. Ich wette, der meiste Code in Programmen ist in Wirklichkeit kein Code, sondern es handelt sich einfach um „Daten“. Wie meine ich das?
Naja die Aufzählung von Feldern in einem Formular – dazu benötigt man keine Turing-Vollständige Programmiersprache mit Schleifen und Kontrollkonstrukten – eine JSON-Datei mit einer Liste der Felder und ihrer Datentypen, sowie 1-2 Constraints (Min-Max-Werte, Validator-Funktionen) würde genau denselben Zweck erfüllen.
Viele Programmierer schreiben diese Sachen aber in Code. Weil sie es nicht anders gelernt haben. Dabei gibt es eine einfache Grundregel, die zwar noch nie jemand genau so definiert hat, aber jeder Informatiker intuitiv im Hinterkopf hat: Schreibe den Code immer in der am wenigsten mächtigen Programmiersprache, die du verwenden kannst. Wenn ich ein String-Pattern als REGEX ausdrücken kann, brauche ich keine FOR-Schleife von Hand programmieren.
Und genau so ist es mit Millionen Zeilen Code in X-beliebigen Projekten: Trennt man dort sauber Code und Daten, hat man das Potenzial anstatt X Millionen Zeilen Code zu schreiben, lieber X Codezeilen mit Y Daten zu durchlaufen. Kann man sein Programm anstatt mit X Code in X*Y Code+Daten ausdrücken, ist X nur noch Wurzel-mal-so-groß. Bei einer Million Zeilen Code bedeutet das – Wurzel aus 1 Mio sind 1000 – 1000 Zeilen Code und 1000 Zeilen JSON-Datei.
Diese M*N-Komplexität von Code trifft man noch an anderen Stellen wieder. Ein Beispiel sind Schnittstellen-Konvertierungen. Hat man 3 Eingangs-Formate und 3 Ausgangsformate, muss man 3x3 = 9 Konvertierungsfunktionen implementieren. Führt man stattdessen ein einheitliches Zwischen-Format ein, muss man nur noch 3+3, also 6 Funktionen schreiben.
Kurzer Code hat viele Vorteile: Man ist schneller mit lesen fertig, es gibt weniger Stellen, an denen man Fehler suchen muss, man hat ihn schneller geschrieben und wenn der Kunde Änderungen wünscht, muss man weniger Code wieder löschen.
Fazit: Die eben angeschnittenen Techniken sind nur ein paar Tricks, seinen Code kurz zu halten. Es gibt noch mehr. Wenn du dran bleiben willst, abonniere diesen Podcast.