Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Lesedauer 5 Min.

Sauberkeit versus Ordnung

Zwei unterschiedliche Dinge, die aber auch in der Softwareentwicklung eine wichtige Rolle spielen.
Soll Code nun sauber sein oder ordentlich? Diese Frage wurde mir neulich in einem Training gestellt, das ich früher noch mit Clean Code Development überschrieben hätte, aber das heute unter dem weiter gefassten Programming with Ease [1] läuft.Sind Sauberkeit und Ordnung synonym? Im ersten Moment erschien es mir so. Eigentlich unterscheide ich im Sprachgebrauch zwischen beidem gar nicht sehr. Für mich ist der dahinterstehende Zweck Nachhaltigkeit so groß und offensichtlich, dass ich nicht so sehr darauf achte.Dennoch: Die Frage war schon berechtigt. Was ist der Unterschied zwischen Sauberkeit und Ordnung? Kann es Sauberkeit ohne Ordnung geben? Kann es Ordnung ohne Sauberkeit geben? Und wenn es einen Unterschied gibt, welche Prinzipien und Praktiken gehören dann zu der einen beziehungsweise zu der anderen Qualität?Ich versuche mal, mich beiden Begriffen über eine Analogie zu nähern:Eine Küche kann aufgeräumt sein. Dann herrscht in ihr Ordnung. In einer ordentlichen Küche steht alles an seinem Platz: die Töpfe im Schrank, das Besteck im Besteckkasten in der Schublade, das Spülmittel neben der Spüle und so weiter. Ordnung definiert einen Platz für die Dinge, die man zur Erledigung von Aufgaben im Rahmen eines Zweckes braucht. In Ordnung sind die Dinge an ihrem Platz. Der Gedanke dahinter: Wenn Ordnung herrscht, dann kann die Aufgabe zügig und verlässlich erfüllt werden. In einer unordentlichen Küche ist man schlicht immer wieder damit beschäftigt, ein Utensil zu finden oder abzustellen. Das behindert beim Kochen. Fehlende Ordnung führt zu Verschwendung.Ordnung bringt also die Dinge in einer zweckdienlichen Form, Konfiguration, Struktur zusammen.Eine Küche kann auch sauber sein (Bild 1). Das bedeutet allerdings nicht, dass sie auch aufgeräumt ist.
Begriffsklärung im Bild:Dreckig vorne und unordentlich hinten(Bild 1) © Autor
In einer sauberen Küche sind alle Dinge blitzblank – und können sich doch an Plätzen befinden, die nicht der Ordnung entsprechen, die in einer Küche herrschen sollte. Saubere Töpfe stehen dann zum Beispiel im Herd, das saubere Besteck liegt im Schrank und die sauberen Gläser finden sich unter der Spüle.Die Unordnung in einer solchermaßen sauberen Küche steht natürlich einem effizienten Kochen im Wege. Dennoch hat die Sauberkeit einen Wert. Nur, worin besteht der? Was ist der Zweck von Sauberkeit?Sauberkeit dient der Hygiene. Und Hygiene ist grundlegender als Effizienz.Ordnung ist funktional. Hygiene hingegen ist existenziell. Ohne Hygiene ist Ordnung nichts. Aber ohne Ordnung ist Hygiene zunächst durchaus genug, um Existenz zu sichern oder zumindest nicht zu gefährden. In einer sauberen, aber unordentlichen Küche kann man kochen – nur dauert es eben länger. In einer ordentlichen, aber unsauberen Küche dagegen kann man nur für sehr kurze Zeit kochen – wenn auch zügig – und wird dann alsbald wohl krank. Ohne Sauberkeit gibt es kein langfristiges Überleben.

Hygiene ohne Ordnung?

Umgekehrt gilt allerdings auch, so denke ich: Ohne Ordnung ist es schwer, Hygiene aufrechtzuerhalten. Mangelnde Ordnung wird früher oder später zu einem Sauberkeitsproblem führen. Der Grund: Nur in der Ordnung ist gut zu erkennen, ob auch alles sauber ist. Zur Ordnung gehört sogar dazu, die Sauberkeit der Dinge zu sichern.Dass während des Gebrauchs von Dingen die Ordnung aufgelöst wird, ist nicht ungewöhnlich. Dass der Gebrauch von Dingen sie dreckig macht, gehört auch dazu. Bis zu einem gewissen Grad ist beides ganz natürlich, unvermeidbar und zu ertragen. Darüber hinaus jedoch wird es problematisch.Unsauberkeit und Unordnung müssen im Zaum gehalten werden, um nicht Existenz und Effizienz zu gefährden.Umgekehrt sind Sauberkeit und Ordnung natürlich kein Selbstzweck. Wer den ganzen Tag nur putzt und ständig am Ordnen ist, dessen Existenz hat keinen Zweck, es gibt kein Vorankommen. Ein Waschzwang ist nicht umsonst eine behandlungswürdige psychopathologische Störung.

Sauber, ordentlich, Entwickler

Was in der Küche gilt, gilt auch in der Softwareentwicklung. Sauberkeit und Ordnung sind herzustellen und aufrechzuerhalten, wenn Existenz und Effizienz eines Softwareprojekts nicht gefährdet werden sollen.Was in der Softwareentwicklung fällt nun aber in die Bereiche Sauberkeit und Ordnung? Dabei ist zu bedenken, dass Sauberkeit und Ordnung bei Software sich nicht auf die Laufzeit beziehen! Im Vergleich zur Analogie Küche könnte man meinen, dass Laufzeit und Kochzeit vergleichbar wären. Das wäre jedoch ein Missverständnis.Der Kochzeit in der Küche entspricht bei der Softwareentwicklung die Entwicklungszeit. Wenn Entwickler sich Gedanken über eine Lösung machen und diese implementieren, müssen Sauberkeit und Ordnung herrschen. Deshalb sind Sauberkeit und Ordnung keine Verhaltensanforderung an Software, sie sind keine funktionalen oder nicht funktionalen Anforderungen. Ordnung weist den Dingen ihren Platz zu. Bei Ordnung geht es um Struktur. Welche Dinge gibt es, wo befinden sie sich, um bei Bedarf zur Hand zu sein? Wie gehören Dinge zusammen, um eine Funktion zu erfüllen?Prinzipien und Praktiken, die sich um die Strukturierung von Code bemühen, gehören für mich deshalb in den Bereich Ordnung. Begriffe in diesem Zusammenhang sind zum Beispiel das Single Responsibility Principle (SRP), Separation of Concerns (SoC), das Integration Operation Segregation Principle (IOSP), die Modularisierung, die Kapselung und die ­Interfaces.Beim Softwareentwurf wird nach einer Ordnung für die notwendigen Teile einer Software gesucht. Die gilt es dann bei der Codierung einzuhalten.Sauberkeit hingegen erwartet Dinge schon an ihrem Platz. Dort werden sie gepflegt. Ihre Funktion soll verfügbar, zugänglich, erkennbar sein. Was zunehmend unter einer Kruste von Dreck verschwindet, kann auch ordentlich weggeräumt bald nicht mehr seinen Dienst erfüllen.Begriffe in diesem Zusammenhang sind für mich zum Beispiel Lesbarkeit [2], Übersichtlichkeit [2], Kommentare, Testabdeckung und Test-first-Codierung [3].Eine test-first-getriebene, gute Testabdeckung sichert zu, dass alle Softwareteile ihren Zweck erfüllen. Ein nach SRP und IOSP gut strukturierter Code stellt sicher, dass alle Teile gut auffindbar ihren Platz haben.Sauberkeit und Ordnung: Sie sind verschieden, sie gehören zusammen. Ihr Zweck ist die langfristige Existenz und Reaktionsfähigkeit der Softwareentwicklung. Beide stellen sich allerdings nicht von allein ein. Beide erfordern vielmehr konstanten Aufwand, um sie zu erhalten [4].

Fussnoten

  1. Programming with Ease, https://ralfw.de/trainings
  2. Ralf Westphal, Handreichungen zum Clean Code Review, http://www.dotnetpro.de/SL2112Sandbox1
  3. Ralf Westphal, Test-first-Codierung, https://leanpub.com/test-first-codierung
  4. Ralf Westphal, Und es gibt sie doch: Softwarewartung, dotnetpro 7/2018, Seite 26 f., http://www.dotnetpro.de/A1807Sandbox

Neueste Beiträge

DWX hakt nach: Wie stellt man Daten besonders lesbar dar?
Dass das Design von Websites maßgeblich für die Lesbarkeit der Inhalte verantwortlich ist, ist klar. Das gleiche gilt aber auch für die Aufbereitung von Daten für Berichte. Worauf besonders zu achten ist, erklären Dr. Ina Humpert und Dr. Julia Norget.
3 Minuten
27. Jun 2025
DWX hakt nach: Wie gestaltet man intuitive User Experiences?
DWX hakt nach: Wie gestaltet man intuitive User Experiences? Intuitive Bedienbarkeit klingt gut – doch wie gelingt sie in der Praxis? UX-Expertin Vicky Pirker verrät auf der Developer Week, worauf es wirklich ankommt. Hier gibt sie vorab einen Einblick in ihre Session.
4 Minuten
27. Jun 2025
IoT neu eingebunden - Integration und Verwaltung von IoT-Geräten mit Azure IoT Operations
Wie sich das neue Azure IoT Operations von bestehenden Azure-Diensten unterscheidet, welche Technologien dabei zum Einsatz kommen und wann sich der Umstieg lohnt.
16 Minuten
15. Jun 2025
Miscellaneous

Das könnte Dich auch interessieren

UIs für Linux - Bedienoberflächen entwickeln mithilfe von C#, .NET und Avalonia
Es gibt viele UI-Frameworks für .NET, doch nur sehr wenige davon unterstützen Linux. Avalonia schafft als etabliertes Open-Source-Projekt Abhilfe.
16 Minuten
16. Jun 2025
Mythos Motivation - Teamentwicklung
Entwickler bringen Arbeitsfreude und Engagement meist schon von Haus aus mit. Diesen inneren Antrieb zu erhalten sollte für Führungskräfte im Fokus stehen.
13 Minuten
19. Jan 2017
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige