SlideShare a Scribd company logo
1 of 28
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
Code Quality
webconia Technology Conference
Vortrag von: Nico Flemming
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
1. Was ist Code Quality und wozu ist das gut?
2. Best practices
3. SOLID principle
4. Ausblick
Inhalt
22.10.2019 1
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 2
80% der Lebenszeit einer Software entfällt auf Wartung
• Leichte Wartbarkeit, Änderungen weniger aufwändig
• Unkompliziert
• Gleichbleibende Qualität
• Unabhängig davon, wer den Code geschrieben hat
• Leichte Einarbeitung neuer Entwickler
• Weniger Fehleranfällig
• Erweiterbarkeit
• Skalierbarkeit
• Portierbarkeit
Warum ist Code Quality wichtig?
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 3
Guter Sourcecode:
• Spart Zeit (beim Debugging, in der Wartung)
• Spart dadurch Geld
• Spart Nerven (Fehler werden schneller gefunden)
• Ist schön anzusehen
Warum ist Code Quality wichtig?
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 4
• Syntaktisch korrekt
• Perfekt strukturiert
• Verständlich kommentiert
• Konsistent
• Sinnolle Namensgebung bei Properties, Methoden, Klassen
• Nutzung von Designpattern
• Vermeidung von Fehlern durch schlechtes Design
Woran erkenne ich guten Code
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 5
Best practice: Nomen est Omen
Was ist an dem Namen dieser Konstante problematisch?
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 6
Best practice: Nomen est Omen
• Obergrenze oder Untergrenze?
• Max 14?
• Oder 15 erlaubt, aber nicht 16?
• MIN/MAX immer inkl.
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 7
Best practice: Konstanten nutzen
Was ist an diesem Ausdruck problematisch?
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 8
Best practice: Konstanten nutzen
• Niemand weiß, was „2“ bedeutet
• Konstante spiegelt die Bedeutung wider, nicht den Wert
• Single Source (“2“ kann geändert werden)
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 9
Best practice: Konstanten nutzen
Was ist an diesem Beispiel
problematisch?
Wie könnte man es besser
machen?
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 10
Best practice: Konstanten nutzen
• Lesbarer (Feldnamen
könnten c1, c2, c3 sein)
• Single Source (Feldnamen
könnten sich ändern)
• Wartbarer
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 11
• Spezifikation der Datentypen in Methodensignaturen
• Typensicherheit
• Vermeidung von Typisierungsfehlern
• Ungarische Notation überflüssig (oOrder, iAmount, aShippingMethods)
Best practice: Type Hints
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 12
• Spezifikation der Return-Datentypen
• Typensicherheit für Aufrufer
• Vermeidung von Typisierungsfehlern
• Verantwortung für Abfangen von
Fehlern in Klasse durch Exceptions
• Entweder Klasse liefert Page zurück
• Oder wirft eine Exception
Best practice: Explicit Return Types
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 13
• Was ist Codestyle
• Lesbarkeit und Wartbarkeit
• Maximierung von Verständlichkeit und Wartbarkeit von Sourcecode
• Codestrukturen sehen einheitlich aus
• Codestrukturen sehen ordentlich aus
• Zurechtfinden auch in fremden Sourcecode
Best practice: Warum Codestyle
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 14
Best practice: Keep it simple
• Hohe zyklomatische Komplexität
• Tiefe Verschachtelung
• Redunante action (“return null“)
• Unübersichtlich
• Fehleranfällig
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 15
Best practice: Keep it simple
Early Exit:
• Nur eine Verschachtelungsebene
• Übersichtlicher
• Nachvollziehbarer
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 16
Best practice: Keep it simple
Early Exit:
• Redundanzvermeidung
• Kurz
• Funktion sofort ersichtlich
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 17
Bad practice: Auskommentieren von Code
• Unübersichtlich
• Fehlerträchtig
• Relevante Änderungen nur a einkommentierten
Code gemacht
• Jemand könnte Code wieder einkommentieren
• Oft Indikator dafür, das Funktion unklare
logische Fehler verbirgt
• Unnötig
• Git History
• Funktion sofort ersichtlich
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 18
Bad practice: Verdächtige Tastaturgeräusche
Tastaturgeräusche über Zeiträume von mehr als 30 Sekunden, die sich
rhythmisch wiederholen
• von Hand erledigt, was durch ein Script erledigt würde
• Verursacher weiß elementares nicht, z.B. wie man in einer IDE mehrere
Zeilen auf einmal auskommentiert
Besser: Script schreiben, Massenfunktionen des Editors nutzen
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 19
• Sammlung Prinzipien objektorientierten Designs
• Von Robert C. Martin (Clean Code Bewegung)
• gutes objektorientiertes Design
1. Single Responsibility
2. Open-Closed
3. Liskov Substitution
4. Interface Segregation
5. Dependency Inversion
• Z.b. Bestandteil der Magento2 Development Guidelines
SOLID Principle
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 20
• Eine Klasse soll nur eine einzige Verantwortung haben
SOLID: Single Responsibility Prinzip
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 21
• Offen für Extensions, geschlossen für Modifications
SOLID: Open - Closed
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 22
SOLID: Liskov Substitution Principle
• Parent Klassen durch deren Child
substituierbar
• Programmcode soll weiterhin
funktionieren
• Schema für gute Klassenstrukturen
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 23
• Vermeidung zu großer Interfaces
• Entstehen oft im Laufe der Zeit
• Alle Klassen müssen sämtliche Methode implementieren, auch unnötige
• Zu Allgemein
• Interface “CoffeeMachine“ implementiert durch FilterCoffeeMachine
• Methode „Mache Kaffee“
• Ergänzung einer EspressoCoffeeMachine
• Ergänzung Methode „Mache Espresso“ in Interface und Klasse
• Alle CoffeeMachines müssen „Mache Espresso“ implementieren
• Besser neues Interface EspressoMachine welches von CoffeeMachine erbt
SOLID: Interface Segregation Principle
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 24
• Kopplungsfreie Klassenmodell
• Implementieren gegen Interfaces statt gegen konkrete
Implementierungen
SOLID: Dependency Inversion Principle
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 25
• Interface definieren
• Konkreten Logger implementieren
• Interface erwarten
SOLID: Dependency Inversion Principle
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 26
• Lasst uns alle versuchen, guten Sourcecode zu schreiben
• bei Codereview auf Anwendung Design Principles
• Über bestmögliche Variante nachdenken
Ausblick
Click to edit Master title style
Click to edit Master subtitle style
webconia Technology Conference
Nico Flemming
22.10.2019 27
Vielen Dank!

More Related Content

Similar to WTC 2019 – Code Qualität

AgileAustriaConference2023_Agile Software Development meets Business_FlorianB...
AgileAustriaConference2023_Agile Software Development meets Business_FlorianB...AgileAustriaConference2023_Agile Software Development meets Business_FlorianB...
AgileAustriaConference2023_Agile Software Development meets Business_FlorianB...Agile Austria Conference
 
Tipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - Köln
Tipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - KölnTipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - Köln
Tipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - KölnViktor Vogel
 
Clean Coding - Theorie und Praxis Guide.pptx
Clean Coding - Theorie und Praxis Guide.pptxClean Coding - Theorie und Praxis Guide.pptx
Clean Coding - Theorie und Praxis Guide.pptxkaftanenko
 
Coderetreat Vorlage
Coderetreat VorlageCoderetreat Vorlage
Coderetreat VorlageRamon Anger
 
CCD 2011: Rollout eines Confluence Intranets (Sascha Knöchel)
CCD 2011: Rollout eines Confluence Intranets (Sascha Knöchel)CCD 2011: Rollout eines Confluence Intranets (Sascha Knöchel)
CCD 2011: Rollout eines Confluence Intranets (Sascha Knöchel)Communardo GmbH
 
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Andreas Wissel
 
Case Study: Automatisierte Code Reviews in einer gewachsenen SAP-Applikations...
Case Study: Automatisierte Code Reviews in einer gewachsenen SAP-Applikations...Case Study: Automatisierte Code Reviews in einer gewachsenen SAP-Applikations...
Case Study: Automatisierte Code Reviews in einer gewachsenen SAP-Applikations...Virtual Forge
 
Crawl-Budget-Booster für eine bessere Search Engine Experience
Crawl-Budget-Booster für eine bessere Search Engine ExperienceCrawl-Budget-Booster für eine bessere Search Engine Experience
Crawl-Budget-Booster für eine bessere Search Engine ExperienceAndré Goldmann
 
Vorstellung TYPO3 Neos - Release 1.0 - Releaseparty Rosenheim
Vorstellung TYPO3 Neos - Release 1.0 - Releaseparty RosenheimVorstellung TYPO3 Neos - Release 1.0 - Releaseparty Rosenheim
Vorstellung TYPO3 Neos - Release 1.0 - Releaseparty RosenheimAlex Kellner
 
FMK2022 Neue Programmiertechniken von Adam Augusting
FMK2022 Neue Programmiertechniken von Adam AugustingFMK2022 Neue Programmiertechniken von Adam Augusting
FMK2022 Neue Programmiertechniken von Adam AugustingVerein FM Konferenz
 
UX & AGILE vom SCRUM Stammtisch Graz
UX & AGILE vom SCRUM Stammtisch GrazUX & AGILE vom SCRUM Stammtisch Graz
UX & AGILE vom SCRUM Stammtisch GrazHAnnes Robier
 
Softwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightSoftwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightChristinaLerch1
 
Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013superflomo
 
Beyond Agile - when Freedom grows to Quality and Speed
Beyond Agile - when Freedom grows to Quality and SpeedBeyond Agile - when Freedom grows to Quality and Speed
Beyond Agile - when Freedom grows to Quality and SpeedSebastian Bernt
 
Das Kung Fu des Code Reviews
Das Kung Fu des Code ReviewsDas Kung Fu des Code Reviews
Das Kung Fu des Code ReviewsChristian Erhardt
 

Similar to WTC 2019 – Code Qualität (20)

AgileAustriaConference2023_Agile Software Development meets Business_FlorianB...
AgileAustriaConference2023_Agile Software Development meets Business_FlorianB...AgileAustriaConference2023_Agile Software Development meets Business_FlorianB...
AgileAustriaConference2023_Agile Software Development meets Business_FlorianB...
 
Tipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - Köln
Tipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - KölnTipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - Köln
Tipps & Tricks für Erweiterungsentwickler - JoomlaDay Deutschland 2014 - Köln
 
Clean Coding - Theorie und Praxis Guide.pptx
Clean Coding - Theorie und Praxis Guide.pptxClean Coding - Theorie und Praxis Guide.pptx
Clean Coding - Theorie und Praxis Guide.pptx
 
CDI
CDICDI
CDI
 
Coderetreat Vorlage
Coderetreat VorlageCoderetreat Vorlage
Coderetreat Vorlage
 
CCD 2011: Rollout eines Confluence Intranets (Sascha Knöchel)
CCD 2011: Rollout eines Confluence Intranets (Sascha Knöchel)CCD 2011: Rollout eines Confluence Intranets (Sascha Knöchel)
CCD 2011: Rollout eines Confluence Intranets (Sascha Knöchel)
 
Ant Maven
Ant MavenAnt Maven
Ant Maven
 
Warum gerade TYPO3?
Warum gerade TYPO3?Warum gerade TYPO3?
Warum gerade TYPO3?
 
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
 
Case Study: Automatisierte Code Reviews in einer gewachsenen SAP-Applikations...
Case Study: Automatisierte Code Reviews in einer gewachsenen SAP-Applikations...Case Study: Automatisierte Code Reviews in einer gewachsenen SAP-Applikations...
Case Study: Automatisierte Code Reviews in einer gewachsenen SAP-Applikations...
 
Crawl-Budget-Booster für eine bessere Search Engine Experience
Crawl-Budget-Booster für eine bessere Search Engine ExperienceCrawl-Budget-Booster für eine bessere Search Engine Experience
Crawl-Budget-Booster für eine bessere Search Engine Experience
 
Vorstellung TYPO3 Neos - Release 1.0 - Releaseparty Rosenheim
Vorstellung TYPO3 Neos - Release 1.0 - Releaseparty RosenheimVorstellung TYPO3 Neos - Release 1.0 - Releaseparty Rosenheim
Vorstellung TYPO3 Neos - Release 1.0 - Releaseparty Rosenheim
 
FMK2022 Neue Programmiertechniken von Adam Augusting
FMK2022 Neue Programmiertechniken von Adam AugustingFMK2022 Neue Programmiertechniken von Adam Augusting
FMK2022 Neue Programmiertechniken von Adam Augusting
 
Video SEO
Video SEOVideo SEO
Video SEO
 
Roslyn DDC Kompakt 2014
Roslyn DDC Kompakt 2014Roslyn DDC Kompakt 2014
Roslyn DDC Kompakt 2014
 
UX & AGILE vom SCRUM Stammtisch Graz
UX & AGILE vom SCRUM Stammtisch GrazUX & AGILE vom SCRUM Stammtisch Graz
UX & AGILE vom SCRUM Stammtisch Graz
 
Softwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightSoftwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha Night
 
Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013Stay calm & keep shipping - iOS DevCon 2013
Stay calm & keep shipping - iOS DevCon 2013
 
Beyond Agile - when Freedom grows to Quality and Speed
Beyond Agile - when Freedom grows to Quality and SpeedBeyond Agile - when Freedom grows to Quality and Speed
Beyond Agile - when Freedom grows to Quality and Speed
 
Das Kung Fu des Code Reviews
Das Kung Fu des Code ReviewsDas Kung Fu des Code Reviews
Das Kung Fu des Code Reviews
 

WTC 2019 – Code Qualität

  • 1. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming Code Quality webconia Technology Conference Vortrag von: Nico Flemming
  • 2. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 1. Was ist Code Quality und wozu ist das gut? 2. Best practices 3. SOLID principle 4. Ausblick Inhalt 22.10.2019 1
  • 3. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 22.10.2019 2 80% der Lebenszeit einer Software entfällt auf Wartung • Leichte Wartbarkeit, Änderungen weniger aufwändig • Unkompliziert • Gleichbleibende Qualität • Unabhängig davon, wer den Code geschrieben hat • Leichte Einarbeitung neuer Entwickler • Weniger Fehleranfällig • Erweiterbarkeit • Skalierbarkeit • Portierbarkeit Warum ist Code Quality wichtig?
  • 4. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 22.10.2019 3 Guter Sourcecode: • Spart Zeit (beim Debugging, in der Wartung) • Spart dadurch Geld • Spart Nerven (Fehler werden schneller gefunden) • Ist schön anzusehen Warum ist Code Quality wichtig?
  • 5. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 22.10.2019 4 • Syntaktisch korrekt • Perfekt strukturiert • Verständlich kommentiert • Konsistent • Sinnolle Namensgebung bei Properties, Methoden, Klassen • Nutzung von Designpattern • Vermeidung von Fehlern durch schlechtes Design Woran erkenne ich guten Code
  • 6. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 22.10.2019 5 Best practice: Nomen est Omen Was ist an dem Namen dieser Konstante problematisch?
  • 7. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 22.10.2019 6 Best practice: Nomen est Omen • Obergrenze oder Untergrenze? • Max 14? • Oder 15 erlaubt, aber nicht 16? • MIN/MAX immer inkl.
  • 8. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 22.10.2019 7 Best practice: Konstanten nutzen Was ist an diesem Ausdruck problematisch?
  • 9. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 22.10.2019 8 Best practice: Konstanten nutzen • Niemand weiß, was „2“ bedeutet • Konstante spiegelt die Bedeutung wider, nicht den Wert • Single Source (“2“ kann geändert werden)
  • 10. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 22.10.2019 9 Best practice: Konstanten nutzen Was ist an diesem Beispiel problematisch? Wie könnte man es besser machen?
  • 11. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 22.10.2019 10 Best practice: Konstanten nutzen • Lesbarer (Feldnamen könnten c1, c2, c3 sein) • Single Source (Feldnamen könnten sich ändern) • Wartbarer
  • 12. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 22.10.2019 11 • Spezifikation der Datentypen in Methodensignaturen • Typensicherheit • Vermeidung von Typisierungsfehlern • Ungarische Notation überflüssig (oOrder, iAmount, aShippingMethods) Best practice: Type Hints
  • 13. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 22.10.2019 12 • Spezifikation der Return-Datentypen • Typensicherheit für Aufrufer • Vermeidung von Typisierungsfehlern • Verantwortung für Abfangen von Fehlern in Klasse durch Exceptions • Entweder Klasse liefert Page zurück • Oder wirft eine Exception Best practice: Explicit Return Types
  • 14. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 22.10.2019 13 • Was ist Codestyle • Lesbarkeit und Wartbarkeit • Maximierung von Verständlichkeit und Wartbarkeit von Sourcecode • Codestrukturen sehen einheitlich aus • Codestrukturen sehen ordentlich aus • Zurechtfinden auch in fremden Sourcecode Best practice: Warum Codestyle
  • 15. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 22.10.2019 14 Best practice: Keep it simple • Hohe zyklomatische Komplexität • Tiefe Verschachtelung • Redunante action (“return null“) • Unübersichtlich • Fehleranfällig
  • 16. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 22.10.2019 15 Best practice: Keep it simple Early Exit: • Nur eine Verschachtelungsebene • Übersichtlicher • Nachvollziehbarer
  • 17. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 22.10.2019 16 Best practice: Keep it simple Early Exit: • Redundanzvermeidung • Kurz • Funktion sofort ersichtlich
  • 18. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 22.10.2019 17 Bad practice: Auskommentieren von Code • Unübersichtlich • Fehlerträchtig • Relevante Änderungen nur a einkommentierten Code gemacht • Jemand könnte Code wieder einkommentieren • Oft Indikator dafür, das Funktion unklare logische Fehler verbirgt • Unnötig • Git History • Funktion sofort ersichtlich
  • 19. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 22.10.2019 18 Bad practice: Verdächtige Tastaturgeräusche Tastaturgeräusche über Zeiträume von mehr als 30 Sekunden, die sich rhythmisch wiederholen • von Hand erledigt, was durch ein Script erledigt würde • Verursacher weiß elementares nicht, z.B. wie man in einer IDE mehrere Zeilen auf einmal auskommentiert Besser: Script schreiben, Massenfunktionen des Editors nutzen
  • 20. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 22.10.2019 19 • Sammlung Prinzipien objektorientierten Designs • Von Robert C. Martin (Clean Code Bewegung) • gutes objektorientiertes Design 1. Single Responsibility 2. Open-Closed 3. Liskov Substitution 4. Interface Segregation 5. Dependency Inversion • Z.b. Bestandteil der Magento2 Development Guidelines SOLID Principle
  • 21. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 22.10.2019 20 • Eine Klasse soll nur eine einzige Verantwortung haben SOLID: Single Responsibility Prinzip
  • 22. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 22.10.2019 21 • Offen für Extensions, geschlossen für Modifications SOLID: Open - Closed
  • 23. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 22.10.2019 22 SOLID: Liskov Substitution Principle • Parent Klassen durch deren Child substituierbar • Programmcode soll weiterhin funktionieren • Schema für gute Klassenstrukturen
  • 24. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 22.10.2019 23 • Vermeidung zu großer Interfaces • Entstehen oft im Laufe der Zeit • Alle Klassen müssen sämtliche Methode implementieren, auch unnötige • Zu Allgemein • Interface “CoffeeMachine“ implementiert durch FilterCoffeeMachine • Methode „Mache Kaffee“ • Ergänzung einer EspressoCoffeeMachine • Ergänzung Methode „Mache Espresso“ in Interface und Klasse • Alle CoffeeMachines müssen „Mache Espresso“ implementieren • Besser neues Interface EspressoMachine welches von CoffeeMachine erbt SOLID: Interface Segregation Principle
  • 25. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 22.10.2019 24 • Kopplungsfreie Klassenmodell • Implementieren gegen Interfaces statt gegen konkrete Implementierungen SOLID: Dependency Inversion Principle
  • 26. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 22.10.2019 25 • Interface definieren • Konkreten Logger implementieren • Interface erwarten SOLID: Dependency Inversion Principle
  • 27. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 22.10.2019 26 • Lasst uns alle versuchen, guten Sourcecode zu schreiben • bei Codereview auf Anwendung Design Principles • Über bestmögliche Variante nachdenken Ausblick
  • 28. Click to edit Master title style Click to edit Master subtitle style webconia Technology Conference Nico Flemming 22.10.2019 27 Vielen Dank!

Editor's Notes

  1. Sinnvoll kommentiert, Code never lies
  2. Unlesbar Abhängig vom Interface – wenn sich Feldnamen ändern muss Sourcecode geändert werden Fehleranfällig (Reihenfolge)
  3. Nur eine Verantwortung, nicht um mehrere Aufgaben kümmern Vermeidung von hoher Kopplung zwischen den einzelnen Methoden
  4. Klasse soll erweitert werden können Core Teil darf in Vererbungen nicht verändert werden
  5. Controller hat wissen über Implementieren (Ausgabemedium File) Anderer Logger htte zum Beispiel Methde „writeToDatabase“ Logger nicht austauschbar ihne Controller zu ändern