SlideShare a Scribd company logo
1 of 31
Download to read offline
Clean Code Developer
                  Dipl.-Inform.

                  Marco Seraphin




Mittwoch, 26. Januar 2011           1
Professionalität


      Was ist ein professioneller
       Software-Entwickler ?



Mittwoch, 26. Januar 2011                      2
Professionalität




Mittwoch, 26. Januar 2011                      3
Professionalität




Mittwoch, 26. Januar 2011                      4
Professionalität




Mittwoch, 26. Januar 2011                      5
Professionalität
      • ..wenn man studiert hat
      • ..wenn man zertifiziert ist
      • ..wenn man sein Geld damit verdient
      • ..wenn man die Wünsche des Kunden
          erfüllt
      • ..wenn man..ja wenn man....




Mittwoch, 26. Januar 2011                      6
Professionalität



    Professionalität = Wissen + Ethik

                                       Professionalität hat was mit
                                       Wissen und Erfahrung zu tun,
                                       aber auch mit Ethik




Mittwoch, 26. Januar 2011                                             7
Professionalität



   Ethik hat etwas mit Werten zu tun




Mittwoch, 26. Januar 2011                      8
Professionalität




                                      Hände wachen ist für den Chirug
                                      selbst verständlich. Bitte um Unterlassung
                                      wegen Kosten wird er ablehnen.




Mittwoch, 26. Januar 2011                                                          9
Qualität



                            Qualität
                                        Er wäscht sich die Hände um die
                                        Qualität seiner Arbeit
                                        sicherzustellen bzw. zu steigern.




Mittwoch, 26. Januar 2011                                                   10
Qualität


 Qualität ist der

 „Grad, in dem ein Satz inhärenter Merkmale
 Anforderungen erfüllt“


 Norm EN ISO 9000:2005, nach http://de.wikipedia.org/wiki/Qualität




Mittwoch, 26. Januar 2011                                            11
Inhärente Merkmale
      •    Usibility
      •    Portabilität
      •    Performance
      •    Sicherheit
      •    Fehler-Toleranz
      •    Testbarkeit                 Solche Punkte wird ein Kunde selten von
                                       sich aus als erstes ansprechen.




Mittwoch, 26. Januar 2011                                                        12
Anforderungen




                                            Wer gibt denn überhaupt
                                            Anforderungen vor ?




Mittwoch, 26. Januar 2011                                             13
Qualität


       Äußere Qualität


                                             Innere Qualität


          Diese beiden Qualitäten sind
          nicht immer gleich verteilt.




Mittwoch, 26. Januar 2011                                      14
Qualität




 Ein Clean Code Developer ist ein Gegengewicht



Mittwoch, 26. Januar 2011                    15
Qualität



        Ein Clean Code Developer definiert ein
        Werte-System für mehr innere Qualität




Mittwoch, 26. Januar 2011                        16
Clean Code Developer


  Ein professioneller Softwareentwickler hat ein inneres Wertesystem.
  Gegen dieses Wertesystem, bestehend aus Gesetzen, Prinzipien und Best
  Practices, prüft er seine Ergebnisse und Handlungen. Nur, wenn seine Arbeit
  diesem Wertesystem entspricht, empfindet er sie als gut getan, als
  professionell. Sein Streben ist es daher, auch unter widrigen Umständen, unter
  Druck von Kunden oder Herstellern, diesem Wertesystem treu zu sein.




Mittwoch, 26. Januar 2011                                                          17
Das Wertesystem

 Evolvierbarkeit

     Je einfacher die Software an geänderte
     Rahmenbedingungen angepasst werden kann, desto höher
     ist ihre Evolvierbarkeit.




                                                   18

Mittwoch, 26. Januar 2011                                   18
Das Wertesystem

 Korrektheit

     Die Software muss korrekt arbeiten, also zum Beispiel
     „richtig“ rechnen. Aber auch nicht-funktionale
     Anforderungen, wie Ressourcen-Verbrauch und z.B.
     Reaktionszeit müssen erfüllt werden.




                                                        19

Mittwoch, 26. Januar 2011                                    19
Das Wertesystem

 Produkteffizienz


     Preis, Entwicklungszeit, Fehlerraten, Automatisierung sind
     alles Aspekte von Produkteffizienz




                                          Eine gute Qualität nutzt nichts wenn
                                          man 2 Jahre über dem Zeitplan liegt.




                                                                  20

Mittwoch, 26. Januar 2011                                                        20
Das Wertesystem

 Reflexion

     Ständige Weiterentwicklung und Überprüfung der eigenen
     Arbeit.


                                            Dazu gehört auch:

                                            ExtremeProgramming
                                            Pairprogramming
                                            Code Reviews




                                                            21

Mittwoch, 26. Januar 2011                                        21
Prinzipen und Praktiken



  Alles schön....aber wie jetzt in der Praxis ?

                                     Wie kann ich die Werte
                                     umsetzen ?

                                     Dafür gibt es beim CCD Prinzipien
                                     und Praktiken.




                                                           22

Mittwoch, 26. Januar 2011                                                22
Das Grad-System
                            Schwarz                   Als einzelner Entwickler

                            Rot

                            Orange
                                                      Im Team
                            Gelb

                            Grün

                            Blau

                            Weiß                      Als Unternehmen

Die Grade drücken keinen Wert aus. Wer am blauen Grad arbeitet ist nicht "besser" oder "weiter" als
jemand, der am orangen Grad arbeitet. Die Grade sind nur ein didaktisches Hilfsmittel, um die Gesamtheit
des Wertesystems "einfacher verdaubar" zu machen. Die vielen Werte lassen sich schlicht in kleinen Happen
besser aneignen, als in einem Anlauf.




                                                                                       23

Mittwoch, 26. Januar 2011                                                                             23
Prinzipien
      Don´t Repeat Yourself (DRY)
              • klassisches Copy & Paste
              • Behebung durch...
                 • Refactoring (Zeit nehmen, machen)
                   • Method Extraktion
                   • Konstanten verwenden
                   • Generische Typen
                   • etc.
                                               24

Mittwoch, 26. Januar 2011                              24
Prinzipien
      Open Closed Principle

     Das Open Closed Principle ( OCP) besagt, dass eine
     Klasse offen für Erweiterungen sein muss, jedoch
     geschlossen gegenüber Modifikationen




                                                     25

Mittwoch, 26. Januar 2011                                 25
Prinzipien
      Favour Composition over Inheritance

     Für die Wiederverwendung von Funktionalität kennt die Objektorientierte Programierung
     (OOP) zwei sehr bekannte Kandidaten: Die Vererbung (whitebox – reuse) und die
     Komposition (blackbox – reuse). Verwendet man Funktionalität wieder durch das
     Ableiten von einer Klasse, so ist die Subklasse abhängig von der Elternklasse. Dies
     macht ein System in vielen Fällen unnötig komplex, schlechter testbar und erschwert
     das Austauschen von Funktionalität zur Laufzeit. CCD hat für das korrekte Ableiten das
     Liskov Substitution Prinzip (LSP) bereit, das es dabei zu befolgen gilt.

     Bei der Komposition verwendet eine Klasse eine andere. Verwendet man dazu eine klar
     definierte Schnittstelle, fördert das die Entkopplung. Auch können verschiedene
     Implementationen einfach ausgetauscht werden. Bevor man sich also der Liskov
     Substitution stellt, fordert Favour Composition over Inheritance, sich die Frage zu
     stellen, ob man der Komposition nicht Vorrang geben kann.




                                                                                     26

Mittwoch, 26. Januar 2011                                                                     26
Prinzipien
      Interface Segregation Principle

     Das Interface Segregation Principle ( ISP) ist ein weiteres SOLID
     Prinzip. Segregation bedeutet Abtrennung. Das Prinzip besagt, dass
     ein Client nicht von Details eines Service abhängig sein soll, die er
     gar nicht benötigt. Je weniger in dessen Interface enthalten ist,
     desto geringer ist die Kopplung zwischen den beiden Komponenten.




                                                                      27

Mittwoch, 26. Januar 2011                                                    27
Praktiken
      Versionskontrolle


                                             Refaktorisierung

                            Testen




                                     Issue Tracking

                                                          28

Mittwoch, 26. Januar 2011                                       28
CCD

     http://www.clean-code-developer.de




                            Robert C. Martin



                                               29

Mittwoch, 26. Januar 2011                           29
CCD



                            Fragen ?

                                       30

Mittwoch, 26. Januar 2011                   30
Bild- und Quellennachweis
     http://www.klemm-bau.de/blog/wp-content/uploads/2009/03/geld.jpg
     http://tu-dresden.de/die_tu_dresden/fakultaeten/fakultaet_sprach_literatur_und_kulturwissenschaften/iz/
           studium/studentenbild
     http://www.vhs-nord.de/images/5000/cert_AppSp_bL.jpg
     http://www.hygiene.bbraun.de/images/chirurgHaendedesinfekt.jpg
     http://www.flickr.com/photos/10087706@N07/2478485742/
     http://www.cleokinderladen.de/images/_bilder/5505_waage_mit_5_gewichten.jpg


     Ralf Westphal & Stefan Lieser - http://www.clean-code-developer.de




                                                                                                     31

Mittwoch, 26. Januar 2011                                                                                      31

More Related Content

More from GFU Cyrus AG

Social Media im Unternehmen
Social Media im UnternehmenSocial Media im Unternehmen
Social Media im UnternehmenGFU Cyrus AG
 
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...GFU Cyrus AG
 
Cross-Apps-Entwicklung für iPhone, Android und Co.
Cross-Apps-Entwicklung für iPhone, Android und Co.Cross-Apps-Entwicklung für iPhone, Android und Co.
Cross-Apps-Entwicklung für iPhone, Android und Co.GFU Cyrus AG
 
Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...
Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...
Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...GFU Cyrus AG
 
Requirements Engineering in agilen Projekten - Flexibilität ist gefordert
Requirements Engineering in agilen Projekten - Flexibilität ist gefordertRequirements Engineering in agilen Projekten - Flexibilität ist gefordert
Requirements Engineering in agilen Projekten - Flexibilität ist gefordertGFU Cyrus AG
 
SharePoint 2010 - Was ist neu, was wird besser!
SharePoint 2010 - Was ist neu, was wird besser!SharePoint 2010 - Was ist neu, was wird besser!
SharePoint 2010 - Was ist neu, was wird besser!GFU Cyrus AG
 
Java Persistence 2.0
Java Persistence 2.0Java Persistence 2.0
Java Persistence 2.0GFU Cyrus AG
 
Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...
Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...
Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...GFU Cyrus AG
 
Liferay Portal - ein Webportal für viele Unternehmensanforderungen
Liferay Portal - ein Webportal für viele UnternehmensanforderungenLiferay Portal - ein Webportal für viele Unternehmensanforderungen
Liferay Portal - ein Webportal für viele UnternehmensanforderungenGFU Cyrus AG
 
PostgreSQL im Produktivbetrieb
PostgreSQL im ProduktivbetriebPostgreSQL im Produktivbetrieb
PostgreSQL im ProduktivbetriebGFU Cyrus AG
 
Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...
Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...
Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...GFU Cyrus AG
 
Wieviel Web2.0 braucht Ihr Unternehmen?
Wieviel Web2.0 braucht Ihr Unternehmen?Wieviel Web2.0 braucht Ihr Unternehmen?
Wieviel Web2.0 braucht Ihr Unternehmen?GFU Cyrus AG
 
Neue Features der Java EE 6
Neue Features der Java EE 6Neue Features der Java EE 6
Neue Features der Java EE 6GFU Cyrus AG
 
Das Java-Spring-Framework in der Praxis
Das Java-Spring-Framework in der PraxisDas Java-Spring-Framework in der Praxis
Das Java-Spring-Framework in der PraxisGFU Cyrus AG
 
Agile Geschäftsprozeßanalyse OOA/D am Beispiel einer Seminarverwaltung
Agile Geschäftsprozeßanalyse OOA/D am Beispiel einer SeminarverwaltungAgile Geschäftsprozeßanalyse OOA/D am Beispiel einer Seminarverwaltung
Agile Geschäftsprozeßanalyse OOA/D am Beispiel einer SeminarverwaltungGFU Cyrus AG
 
Wissensmanagement bei Volkswagen
Wissensmanagement bei VolkswagenWissensmanagement bei Volkswagen
Wissensmanagement bei VolkswagenGFU Cyrus AG
 
Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...
Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...
Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...GFU Cyrus AG
 
Grenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalk
Grenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalkGrenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalk
Grenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalkGFU Cyrus AG
 
Projekt! - Toll - Ein Anderer Macht`s! - Voraussetzungen für eine erfolgreich...
Projekt! - Toll - Ein Anderer Macht`s! - Voraussetzungen für eine erfolgreich...Projekt! - Toll - Ein Anderer Macht`s! - Voraussetzungen für eine erfolgreich...
Projekt! - Toll - Ein Anderer Macht`s! - Voraussetzungen für eine erfolgreich...GFU Cyrus AG
 
Standardsoftware in der Versicherungsbranche - Betrachtung eines Paradigmenwe...
Standardsoftware in der Versicherungsbranche - Betrachtung eines Paradigmenwe...Standardsoftware in der Versicherungsbranche - Betrachtung eines Paradigmenwe...
Standardsoftware in der Versicherungsbranche - Betrachtung eines Paradigmenwe...GFU Cyrus AG
 

More from GFU Cyrus AG (20)

Social Media im Unternehmen
Social Media im UnternehmenSocial Media im Unternehmen
Social Media im Unternehmen
 
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...
Java Code Quality: Gute Software braucht guten Code - Regeln für verständlich...
 
Cross-Apps-Entwicklung für iPhone, Android und Co.
Cross-Apps-Entwicklung für iPhone, Android und Co.Cross-Apps-Entwicklung für iPhone, Android und Co.
Cross-Apps-Entwicklung für iPhone, Android und Co.
 
Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...
Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...
Datenschutz bei Facebook & Co. - Wie schütze ich meine persönlichen Daten im ...
 
Requirements Engineering in agilen Projekten - Flexibilität ist gefordert
Requirements Engineering in agilen Projekten - Flexibilität ist gefordertRequirements Engineering in agilen Projekten - Flexibilität ist gefordert
Requirements Engineering in agilen Projekten - Flexibilität ist gefordert
 
SharePoint 2010 - Was ist neu, was wird besser!
SharePoint 2010 - Was ist neu, was wird besser!SharePoint 2010 - Was ist neu, was wird besser!
SharePoint 2010 - Was ist neu, was wird besser!
 
Java Persistence 2.0
Java Persistence 2.0Java Persistence 2.0
Java Persistence 2.0
 
Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...
Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...
Pragmatische Einführung von IT-Servicemanagement - ITIL im Unternehmen - Erfa...
 
Liferay Portal - ein Webportal für viele Unternehmensanforderungen
Liferay Portal - ein Webportal für viele UnternehmensanforderungenLiferay Portal - ein Webportal für viele Unternehmensanforderungen
Liferay Portal - ein Webportal für viele Unternehmensanforderungen
 
PostgreSQL im Produktivbetrieb
PostgreSQL im ProduktivbetriebPostgreSQL im Produktivbetrieb
PostgreSQL im Produktivbetrieb
 
Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...
Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...
Java Server Faces 2.0 - Der Standard für moderne und komponentenbasierte Weba...
 
Wieviel Web2.0 braucht Ihr Unternehmen?
Wieviel Web2.0 braucht Ihr Unternehmen?Wieviel Web2.0 braucht Ihr Unternehmen?
Wieviel Web2.0 braucht Ihr Unternehmen?
 
Neue Features der Java EE 6
Neue Features der Java EE 6Neue Features der Java EE 6
Neue Features der Java EE 6
 
Das Java-Spring-Framework in der Praxis
Das Java-Spring-Framework in der PraxisDas Java-Spring-Framework in der Praxis
Das Java-Spring-Framework in der Praxis
 
Agile Geschäftsprozeßanalyse OOA/D am Beispiel einer Seminarverwaltung
Agile Geschäftsprozeßanalyse OOA/D am Beispiel einer SeminarverwaltungAgile Geschäftsprozeßanalyse OOA/D am Beispiel einer Seminarverwaltung
Agile Geschäftsprozeßanalyse OOA/D am Beispiel einer Seminarverwaltung
 
Wissensmanagement bei Volkswagen
Wissensmanagement bei VolkswagenWissensmanagement bei Volkswagen
Wissensmanagement bei Volkswagen
 
Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...
Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...
Professionelle Anforderungsanalyse am Beispiel einer Java-Anwendung zur Betri...
 
Grenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalk
Grenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalkGrenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalk
Grenzüberschreitende Geschäftsprozesse mit Microsoft SharePoint und BizTalk
 
Projekt! - Toll - Ein Anderer Macht`s! - Voraussetzungen für eine erfolgreich...
Projekt! - Toll - Ein Anderer Macht`s! - Voraussetzungen für eine erfolgreich...Projekt! - Toll - Ein Anderer Macht`s! - Voraussetzungen für eine erfolgreich...
Projekt! - Toll - Ein Anderer Macht`s! - Voraussetzungen für eine erfolgreich...
 
Standardsoftware in der Versicherungsbranche - Betrachtung eines Paradigmenwe...
Standardsoftware in der Versicherungsbranche - Betrachtung eines Paradigmenwe...Standardsoftware in der Versicherungsbranche - Betrachtung eines Paradigmenwe...
Standardsoftware in der Versicherungsbranche - Betrachtung eines Paradigmenwe...
 

Clean Code Developer

  • 1. Clean Code Developer Dipl.-Inform. Marco Seraphin Mittwoch, 26. Januar 2011 1
  • 2. Professionalität Was ist ein professioneller Software-Entwickler ? Mittwoch, 26. Januar 2011 2
  • 6. Professionalität • ..wenn man studiert hat • ..wenn man zertifiziert ist • ..wenn man sein Geld damit verdient • ..wenn man die Wünsche des Kunden erfüllt • ..wenn man..ja wenn man.... Mittwoch, 26. Januar 2011 6
  • 7. Professionalität Professionalität = Wissen + Ethik Professionalität hat was mit Wissen und Erfahrung zu tun, aber auch mit Ethik Mittwoch, 26. Januar 2011 7
  • 8. Professionalität Ethik hat etwas mit Werten zu tun Mittwoch, 26. Januar 2011 8
  • 9. Professionalität Hände wachen ist für den Chirug selbst verständlich. Bitte um Unterlassung wegen Kosten wird er ablehnen. Mittwoch, 26. Januar 2011 9
  • 10. Qualität Qualität Er wäscht sich die Hände um die Qualität seiner Arbeit sicherzustellen bzw. zu steigern. Mittwoch, 26. Januar 2011 10
  • 11. Qualität Qualität ist der „Grad, in dem ein Satz inhärenter Merkmale Anforderungen erfüllt“ Norm EN ISO 9000:2005, nach http://de.wikipedia.org/wiki/Qualität Mittwoch, 26. Januar 2011 11
  • 12. Inhärente Merkmale • Usibility • Portabilität • Performance • Sicherheit • Fehler-Toleranz • Testbarkeit Solche Punkte wird ein Kunde selten von sich aus als erstes ansprechen. Mittwoch, 26. Januar 2011 12
  • 13. Anforderungen Wer gibt denn überhaupt Anforderungen vor ? Mittwoch, 26. Januar 2011 13
  • 14. Qualität Äußere Qualität Innere Qualität Diese beiden Qualitäten sind nicht immer gleich verteilt. Mittwoch, 26. Januar 2011 14
  • 15. Qualität Ein Clean Code Developer ist ein Gegengewicht Mittwoch, 26. Januar 2011 15
  • 16. Qualität Ein Clean Code Developer definiert ein Werte-System für mehr innere Qualität Mittwoch, 26. Januar 2011 16
  • 17. Clean Code Developer Ein professioneller Softwareentwickler hat ein inneres Wertesystem. Gegen dieses Wertesystem, bestehend aus Gesetzen, Prinzipien und Best Practices, prüft er seine Ergebnisse und Handlungen. Nur, wenn seine Arbeit diesem Wertesystem entspricht, empfindet er sie als gut getan, als professionell. Sein Streben ist es daher, auch unter widrigen Umständen, unter Druck von Kunden oder Herstellern, diesem Wertesystem treu zu sein. Mittwoch, 26. Januar 2011 17
  • 18. Das Wertesystem Evolvierbarkeit Je einfacher die Software an geänderte Rahmenbedingungen angepasst werden kann, desto höher ist ihre Evolvierbarkeit. 18 Mittwoch, 26. Januar 2011 18
  • 19. Das Wertesystem Korrektheit Die Software muss korrekt arbeiten, also zum Beispiel „richtig“ rechnen. Aber auch nicht-funktionale Anforderungen, wie Ressourcen-Verbrauch und z.B. Reaktionszeit müssen erfüllt werden. 19 Mittwoch, 26. Januar 2011 19
  • 20. Das Wertesystem Produkteffizienz Preis, Entwicklungszeit, Fehlerraten, Automatisierung sind alles Aspekte von Produkteffizienz Eine gute Qualität nutzt nichts wenn man 2 Jahre über dem Zeitplan liegt. 20 Mittwoch, 26. Januar 2011 20
  • 21. Das Wertesystem Reflexion Ständige Weiterentwicklung und Überprüfung der eigenen Arbeit. Dazu gehört auch: ExtremeProgramming Pairprogramming Code Reviews 21 Mittwoch, 26. Januar 2011 21
  • 22. Prinzipen und Praktiken Alles schön....aber wie jetzt in der Praxis ? Wie kann ich die Werte umsetzen ? Dafür gibt es beim CCD Prinzipien und Praktiken. 22 Mittwoch, 26. Januar 2011 22
  • 23. Das Grad-System Schwarz Als einzelner Entwickler Rot Orange Im Team Gelb Grün Blau Weiß Als Unternehmen Die Grade drücken keinen Wert aus. Wer am blauen Grad arbeitet ist nicht "besser" oder "weiter" als jemand, der am orangen Grad arbeitet. Die Grade sind nur ein didaktisches Hilfsmittel, um die Gesamtheit des Wertesystems "einfacher verdaubar" zu machen. Die vielen Werte lassen sich schlicht in kleinen Happen besser aneignen, als in einem Anlauf. 23 Mittwoch, 26. Januar 2011 23
  • 24. Prinzipien Don´t Repeat Yourself (DRY) • klassisches Copy & Paste • Behebung durch... • Refactoring (Zeit nehmen, machen) • Method Extraktion • Konstanten verwenden • Generische Typen • etc. 24 Mittwoch, 26. Januar 2011 24
  • 25. Prinzipien Open Closed Principle Das Open Closed Principle ( OCP) besagt, dass eine Klasse offen für Erweiterungen sein muss, jedoch geschlossen gegenüber Modifikationen 25 Mittwoch, 26. Januar 2011 25
  • 26. Prinzipien Favour Composition over Inheritance Für die Wiederverwendung von Funktionalität kennt die Objektorientierte Programierung (OOP) zwei sehr bekannte Kandidaten: Die Vererbung (whitebox – reuse) und die Komposition (blackbox – reuse). Verwendet man Funktionalität wieder durch das Ableiten von einer Klasse, so ist die Subklasse abhängig von der Elternklasse. Dies macht ein System in vielen Fällen unnötig komplex, schlechter testbar und erschwert das Austauschen von Funktionalität zur Laufzeit. CCD hat für das korrekte Ableiten das Liskov Substitution Prinzip (LSP) bereit, das es dabei zu befolgen gilt. Bei der Komposition verwendet eine Klasse eine andere. Verwendet man dazu eine klar definierte Schnittstelle, fördert das die Entkopplung. Auch können verschiedene Implementationen einfach ausgetauscht werden. Bevor man sich also der Liskov Substitution stellt, fordert Favour Composition over Inheritance, sich die Frage zu stellen, ob man der Komposition nicht Vorrang geben kann. 26 Mittwoch, 26. Januar 2011 26
  • 27. Prinzipien Interface Segregation Principle Das Interface Segregation Principle ( ISP) ist ein weiteres SOLID Prinzip. Segregation bedeutet Abtrennung. Das Prinzip besagt, dass ein Client nicht von Details eines Service abhängig sein soll, die er gar nicht benötigt. Je weniger in dessen Interface enthalten ist, desto geringer ist die Kopplung zwischen den beiden Komponenten. 27 Mittwoch, 26. Januar 2011 27
  • 28. Praktiken Versionskontrolle Refaktorisierung Testen Issue Tracking 28 Mittwoch, 26. Januar 2011 28
  • 29. CCD http://www.clean-code-developer.de Robert C. Martin 29 Mittwoch, 26. Januar 2011 29
  • 30. CCD Fragen ? 30 Mittwoch, 26. Januar 2011 30
  • 31. Bild- und Quellennachweis http://www.klemm-bau.de/blog/wp-content/uploads/2009/03/geld.jpg http://tu-dresden.de/die_tu_dresden/fakultaeten/fakultaet_sprach_literatur_und_kulturwissenschaften/iz/ studium/studentenbild http://www.vhs-nord.de/images/5000/cert_AppSp_bL.jpg http://www.hygiene.bbraun.de/images/chirurgHaendedesinfekt.jpg http://www.flickr.com/photos/10087706@N07/2478485742/ http://www.cleokinderladen.de/images/_bilder/5505_waage_mit_5_gewichten.jpg Ralf Westphal & Stefan Lieser - http://www.clean-code-developer.de 31 Mittwoch, 26. Januar 2011 31