CleanCode: Unterschied zwischen den Versionen

Aus Das Sopra Wiki
DanielL (Diskussion | Beiträge)
Einleitung, Warum Clean Code?, sowie Bennenungsteil hinzugefügt. Prinziepien reihenfolge überarbeitet
Langenfeld (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
 
(7 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{TOCRight}}
== Clean Code Development ==
== Clean Code Development ==
Clean Code ist ein von Robert C. Martin in seinem gleichnamigen Buch <ref>
Clean Code ist ein von Robert C. Martin in seinem gleichnamigen Buch <ref>
Robert C. Martin. Clean Code: A Handbook of Agile Software Craftsmanship. Prentice Hall PTR, Upper Saddle River, NJ, USA, 1 Edition, 2008. [http://www.amazon.de/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882 Bei Amazon.]</ref> geprägter Begriff aus der Softwareentwicklung welcher in erster Linie Quellcode aber auch andere Dokumente und Konzepte bezeichnet welche intuitiv verständlich sind. <ref>Seite „Clean Code“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 16. März 2018, 09:50 UTC. URL: https://de.wikipedia.org/w/index.php?title=Clean_Code&oldid=175065244 (Abgerufen: 20. April 2019, 15:58 UTC)</ref>
Robert C. Martin. Clean Code: A Handbook of Agile Software Craftsmanship. Prentice Hall PTR, Upper Saddle River, NJ, USA, 1 Edition, 2008. [http://www.amazon.de/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882 Bei Amazon.]</ref> geprägter Begriff aus der Softwareentwicklung welcher in erster Linie Quellcode aber auch andere Dokumente und Konzepte bezeichnet welche intuitiv verständlich sind. <ref>Seite „Clean Code“. In: Wikipedia https://de.wikipedia.org/wiki/Clean_Code</ref>


=== Warum Clean Code? ===
=== Warum Clean Code? ===
Je größer ein Projekt ist und je mehr Parteien daran entwickeln desto wichtiger wird es, dass Code nicht nur funktional seinen Zweck erfüllt sondern auch Lesbar und Verständlich ist für alle die, die nicht Autoren des Quellcodes sind. Das erleichtert zum einen das Verwenden von bereits geschriebenen Klassen, Funktionen und Konstrukten, das Finden von Bugs, sowie das Erweitern solcher Konstrukte. "Unsauberer" Code führt zu steigendem Zeitaufwand beim Implementieren und zu Unproduktivität, was demotivierend sein kann.  
Als Clean Code bezeichnet man intuitiv verständlichen Programmcode. Die Idee von Clean Code basiert auf der Beobachtung, dass ein Großteil der Arbeitszeit in einem Projekt auf der Arbeit mit bereits bestehendem Programmcode basiert (Wartung, Erweiterung, Debugging). Programmcode der „clean“ ist unterstützt diese Arbeit durch seine Verständlichkeit und Struktur. Umgekehrt ist arbeiten mit nicht „clean“ Code oft eine zeitaufwändig und fehleranfällige Übung in Geduld während man versucht das Werk eines anderen (oder eines jüngeren Selbst) nachzuvollziehen.


=== Benennung ===
=== Benennung ===
Zeile 69: Zeile 71:
===== [http://clean-code-developer.de/die-grade/gruener-grad/#Tell_dont_ask Tell, don't ask] =====
===== [http://clean-code-developer.de/die-grade/gruener-grad/#Tell_dont_ask Tell, don't ask] =====
Eine Klasse sollte nicht von außen über ihren internen Zustand befragt werden können. Es ist besser dem Objekt mitzuteilen was es zu tun hat. Das verlagert die Logik zur Benutzung der Klasse in die Klasse selbst und der Benutzer muss sich darüber keine Gedanken mehr machen. Als Ergebnis entstehen Objekte mit Verhalten statt "dummer" Datenhaltungsobjekte.
Eine Klasse sollte nicht von außen über ihren internen Zustand befragt werden können. Es ist besser dem Objekt mitzuteilen was es zu tun hat. Das verlagert die Logik zur Benutzung der Klasse in die Klasse selbst und der Benutzer muss sich darüber keine Gedanken mehr machen. Als Ergebnis entstehen Objekte mit Verhalten statt "dummer" Datenhaltungsobjekte.
[http://pragprog.com/articles/tell-dont-ask &rarr; mehr dazu]


===== [http://clean-code-developer.de/die-grade/gelber-grad/#Dependency_Inversion_Principle Dependency Inversion Principle (DIP)] =====
===== [http://clean-code-developer.de/die-grade/gelber-grad/#Dependency_Inversion_Principle Dependency Inversion Principle (DIP)] =====
Zeile 81: Zeile 81:
===== [http://clean-code-developer.de/die-grade/roter-grad/#Vorsicht_vor_Optimierungen Beware of Optimizations] =====
===== [http://clean-code-developer.de/die-grade/roter-grad/#Vorsicht_vor_Optimierungen Beware of Optimizations] =====
Optimierung bedeutet Aufwand und komplexeren Code. Solange es nicht WIRKLICH notwendig ist, sollte man darauf verzichten.
Optimierung bedeutet Aufwand und komplexeren Code. Solange es nicht WIRKLICH notwendig ist, sollte man darauf verzichten.
[http://www.codermike.com/ccd-red-degree-rule-beware-of-optimizations &rarr; mehr dazu]


===== Favour Composition over Inheritance (FCoI) =====
===== Favour Composition over Inheritance (FCoI) =====
Komposition ist flexibler als Ableitung. Bevor man von einer Klasse ableitet, sollte man sich daher immer zuerst fragen, ob man dasselbe Ergebnis nicht auch mit Komposition erreichen kann.
Komposition ist flexibler als Ableitung. Bevor man von einer Klasse ableitet, sollte man sich daher immer zuerst fragen, ob man dasselbe Ergebnis nicht auch mit Komposition erreichen kann.
[http://blogs.msdn.com/b/steverowe/archive/2008/04/28/prefer-composition-over-inheritance.aspx &rarr; mehr dazu]


[http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/ &rarr; mehr dazu]
[http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/ &rarr; mehr dazu]