Clean Code

... für unsere Kunden nur das Beste

Programmcode ist die Grundlage jeder Software. Clean Code ist die Grundlage unserer Software, und zwar sowohl in der Individualentwicklung als auch beim Engineering unserer eigenen Standardbranchensoftware. Das ist kein teurer Ethos, sondern schlichte Notwendigkeit.

Software ist längst zur Seele eines Produkts oder Prozesses geworden – was Elon Musk als Digital Native immer schon klar war, muss die Automobilindustrie schmerzhaft lernen. Klar ist: Software extern entwickeln zu lassen, ist Vertrauenssache. Wer sich nicht auf ewig binden will, sollte einen Dienstleister wählen, dessen Quellcode sauber ist und dauerhaft verständlich sowie weiterentwickelbar bleibt. Die 10 Clean Code-Tugenden helfen, uns ersetzbar zu machen. Sie basieren auf folgenden Grundwerten:

  • Evolvierbarkeit (ein System mit vertretbarem Aufwand weiterentwickelbar machen)
  • Korrektheit
  • Produktionseffizienz
  • Reflexion der eigenen Arbeit

 

Wir verzichten auf vorzeitige Optimierungen, um nichts zu optimieren, was später vielleicht nicht mehr relevant ist. Wir schreiben keinen Code, der nicht definitiv gebraucht wird. Und wir sind immer bestrebt, möglichst einfache Lösungen zu finden.

Wenn wir bei der Arbeit Aspekte isolieren, vermeiden wir ungünstige Programmstrukturen, die Verständnis und Weiterentwicklung erschweren würden.

Unnötige Abhängigkeiten zwischen einzelnen Komponenten eines Systems können das Verständnis und die Weiterentwicklung sehr schwer machen. Aus diesem Grund nutzen wir Inversion of Control, wodurch eine Komponente weniger von ihrer Umgebung abhängt. Schnittstellen zwischen Komponenten gestalten wir so einfach wie möglich.

Eine Komponente bietet über ihre äußere Schnittstelle Funktionalität an, der gemäß dem Liskovschen Substitutionsprinzip auch davon abgeleitete Komponenten nicht widersprechen dürfen. Grundsätzlich sollte ein Code so wenige Überraschungen wie möglich enthalten, wozu auch zählt, dass die Implementierung den Entwurf widerspiegelt.

Softwareentwicklung im Voraus bis in letzte Details zu planen, ist praktisch unmöglich. Statt sich vor dem stetigen Wandel zu fürchten, heißen wir ihn willkommen und stellen uns auf ihn ein. Wir speichern alle Entwicklungsstände in einem Versionsverwaltungssystem, sodass wir jederzeit zu älteren Versionen zurückkehren oder neue Entwicklungslinien abzweigen können. Die nötige Sicherheit geben uns viele automatisierte Tests.

Durch Komponentenorientierung, den Test-first-Ansatz und die Begrenzung der parallel bearbeiteten Aufgaben konzentrieren wir uns auf das eigentliche Problem und arbeiten effizient.

Unseren eigenen Ansprüchen genügt nur hohe Qualität, die wir mit automatisierten Tests, gegenseitigen Reviews und statischer Codeanalyse sicherstellen.

Software nützt nichts, wenn sie nicht fertig wird. Deshalb entwickeln wir in kleinen Schritten und liefern regelmäßig Ergebnisse aus.

Jeder kennt das Phänomen der sich wie von Geisterhand verbreitenden Unordnung, wenn man nicht kontinuierlich dagegen ankämpft. Um diesem Schicksal zu entkommen, machen wir kleine Verbesserungen gemäß der Pfadfinderregel an Ort und Stelle, bevor wir eine Stelle im Code wieder verlassen. Wir bauen unseren Code um, wenn er dadurch besser wird, und wir durchleuchten ihn mit Werkzeugen zur statischen Code-Analyse. Außerdem halten wir uns an Programmierkonventionen.

Die Welt der Softwareentwicklung ist überaus schnelllebig und ständige Weiterbildung ist die einzige Konstante. Wir studieren kontinuierlich aktuelle Zeitschriften, Bücher, Blog-Artikel, Foren und andere Quellen, um auf dem Laufenden zu bleiben. Wir reflektieren regelmäßig unsere Arbeit, analysieren Probleme und geben auch gern unsere Erfahrungen weiter.