Einheitlicher Dialekt im Code

vom 2024-02-24 automatisch übersetzt

Was wäre, wenn sich eine Codebasis überall gleich anfühlen würde?

Jede Scala-Codebasis, die ich bisher gesehen habe und die älter als drei Jahre war, ist ein schrecklicher Flickenteppich aus Dialekten (im Laufe der Zeit einer pro Mitwirkendem). (Quelle)

Ich habe einige Codebasen gesehen, bei denen ich allein durch das Betrachten des Codes spüren konnte, wer welchen Teil ursprünglich geschrieben hatte. Dieser individuelle Stil beschränkt sich nicht nur auf Formatierung* und Benennung, sondern zeigt sich auch auf architektonischer Ebene: etwa in den verwendeten Idiomen, dem Entwurf von Funktionssignaturen, der Entscheidung, wann Zuständigkeiten in einzelne Funktionen aufgeteilt werden, Daten- oder Objektorientierung, der Abstraktion von Konzepten, der Nutzung von Bibliotheksfunktionen und vielem mehr. (*vorausgesetzt, dies wird nicht erzwungen)

Jede Kombination dieser Eigenschaften könnte man als Dialekt klassifizieren. Dialekte sind naturgemäß vergänglich und unscharf; sie ändern sich je nach Programmierer, Tageszeit, Erfahrung, Grad der Ablenkung, aktueller Aufgabe usw.

Das Warten und Weiterentwickeln von Code mit unterschiedlichen Dialekten erzeugt aufgrund dieser Inkompatibilität wahrscheinlich eine gewisse mentale Belastung. Ich frage mich, wie groß die tatsächlichen Auswirkungen in der Praxis sind, aber ich habe das Gefühl, dass sie insbesondere bei langlebigen Codebasen größer als null sind. Wenn ich in Zukunft auf Beispiele für dieses Problem stoße, werde ich sie hier sammeln.

Könnten wir Dialekte irgendwie loswerden und eine Codebasis (oder eine Sprache) schaffen, die nur einen einzigen Dialekt zulässt? Einige Sprachen verfolgen dieses Prinzip der „einen einzigen Art, etwas zu tun“, aber meiner Meinung nach betrifft das nur recht grundlegende architektonische Entscheidungen.

Mit dem Aufkommen von LLMs könnte es möglich und lohnenswert sein, dies zu erforschen: einen LLM-basierten Linter zu entwickeln, der erklären kann, wie und warum Code nicht idiomatisch ist, und sogar Verbesserungen vorschlägt.