SlideShare ist ein Scribd-Unternehmen logo
BASEL BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENEVA
HAMBURG COPENHAGEN LAUSANNE MUNICH STUTTGART VIENNA ZURICH
Die S.O.L.I.D-Prinzipien
für C# Entwickler
Thomas Claudius Huber
@ThomasClaudiusH
Thomas Claudius Huber
Developer Week 2016 - Nürnberg - Thomas Claudius Huber2 22.06.2016
Principal Consultant @ Trivadis AG
Cloud Solutions
Developer, Trainer, Architect
Microsoft MVP for Windows Development
Spezialisiert in WPF, Angular 2, C#, .NET, Azure
What else:
Pluralsight-Autor, Buchautor
Fussball, Skaten, Fitness, Gitarre
Agenda
Developer Week 2016 - Nürnberg - Thomas Claudius Huber3 22.06.2016
1. Die S.O.L.I.D.-Prinzipien
2. Umsetzung in C#
3. Summary
Developer Week 2016 - Nürnberg - Thomas Claudius Huber4 22.06.2016
1. Die S.O.L.I.D.-Prinzipien
S.O.L.I.D.-Prinzipien
Developer Week 2016 - Nürnberg - Thomas Claudius Huber5 22.06.2016
Fünf Prinzipien für wartbaren Code
Nicht an eine Technologie gebunden
Single
Responsibility
Open /
Closed
Liskov
Substitution
Interface
Segregation
Dependency
Inversion
Wo hat das Ganze seinen Ursprung
Developer Week 2016 - Nürnberg - Thomas Claudius Huber6 22.06.2016
S.O.L.I.D.-Acronym wurde von Michael Feathers eingeführt
– Basierend auf den ersten 5 objektorientierten Prinzipien von
Robert C. Martin
Werden die fünf Prinzipien angewendet, soll der Code
wartbarer und leicht erweiterbar sein
Developer Week 2016 - Nürnberg - Thomas Claudius Huber7 22.06.2016
2. Umsetzung in C#
Ein Demo-Projekt
Developer Week 2016 - Nürnberg - Thomas Claudius Huber8 22.06.2016
Ein einfacher File-Reader
Let’s «hack» it down
Demo
Single Responsibility Principle (SRP)
Developer Week 2016 - Nürnberg - Thomas Claudius Huber9 22.06.2016
“There is one and only one reason
to change a class”
Demo
Single Responsibility Principle (SRP)
Developer Week 2016 - Nürnberg - Thomas Claudius Huber10 22.06.2016
Weitere Beispiele
Single Responsibility Principle (SRP)
Developer Week 2016 - Nürnberg - Thomas Claudius Huber11 22.06.2016
Nur eine Verantwortlichkeit
Gilt für alle Objekte: Assemblies, Klassen, Methoden
Sorgt für wartbare, kleine Klassen
Open/Closed Principle (OCP)
Developer Week 2016 - Nürnberg - Thomas Claudius Huber12 22.06.2016
“Software entities (classes, modules,
functions, etc.) should be open for
extension, but closed for
modification”
Open/Closed Principle (OCP)
Developer Week 2016 - Nürnberg - Thomas Claudius Huber13 22.06.2016
Open for Extension Closed for Modification
Die Klasse kann um neue
Anforderungen erweitert werden
Bestehender Code wird
nicht verändert
Open/Closed Principle (OCP)
Developer Week 2016 - Nürnberg - Thomas Claudius Huber14 22.06.2016
Änderungen durch Hinzufügen von neuem Code
Änderungen NICHT durch Änderung von altem Code
Der Schlüssel liegt in der Abstraktion
Demo
Open/Closed Principle (OCP)
Developer Week 2016 - Nürnberg - Thomas Claudius Huber15 22.06.2016
Bestehender Code wird nicht geändert
Unit Tests bleiben grün
Manchmal schwierig was virtual ist und was nicht
Liskov Substitution Principle (LSP)
Developer Week 2016 - Nürnberg - Thomas Claudius Huber16 22.06.2016
“Objects in a program should be
replaceable with instances of their
subtypes without altering the
correctness of that program”
Liskov Substitution Principle (LSP)
Developer Week 2016 - Nürnberg - Thomas Claudius Huber17 22.06.2016
Eine Erweiterung von OCP
Sicherstellen, dass abgeleitete Klassen das Verhalten der
Basisklasse nicht verändern
Demo
Interface Segregation Principle (ISP)
Developer Week 2016 - Nürnberg - Thomas Claudius Huber18 22.06.2016
“Clients should not be forced to
depend upon interfaces that they do
not use”
Interface Segregation Principle (ISP)
Developer Week 2016 - Nürnberg - Thomas Claudius Huber19 22.06.2016
Grosse Interfaces = mehr Abhängigkeiten
Interface Pollution (Clients müssen Member implementieren,
welche sie nicht brauchen)
Lösung: Keine „fat“ Interfaces, stattdessen viele kleine
Interfaces
Demo
Dependency Inversion Principle (DIP)
Developer Week 2016 - Nürnberg - Thomas Claudius Huber20 22.06.2016
“Depend upon Abstractions. Do not
depend upon concretions”
Dependency Inversion Principle (DIP)
Developer Week 2016 - Nürnberg - Thomas Claudius Huber21 22.06.2016
Abstraktion durch Interfaces / abstrakte Basisklassen
Code lässt sich ohne Implementierungen testen
– Mocking von Interfaces
Üblich wird zum Auflösen der Interfaces ein DI-Container
genutzt
Demo
Developer Week 2016 - Nürnberg - Thomas Claudius Huber22 22.06.2016
3. Summary
Anzeichen auf «stinkenden» Code
Developer Week 2016 - Nürnberg - Thomas Claudius Huber23 22.06.2016
If-Statement, welches Typen unterscheidet -> OCP
Interface-Methoden, welche in vielen Fällen nicht
implementiert werden müssen -> ISP
FAT Interfaces -> ISP
Methodennamen wie: UpdateAndSaveCustomer(),
VerifyAndSaveData() -> SRP
Klassennamen wie CustomerManager -> SRP
S.O.L.I.D.-Summary
Developer Week 2016 - Nürnberg - Thomas Claudius Huber24 22.06.2016
Hilft wartbaren Code zu schreiben
Projekte bekommen eine gute Struktur
Es sind lediglich Prinzipien
– Nicht übertreiben. 
Fragen?
Thomas Claudius Huber
@thomasclaudiush
thomas.huber@trivadis.com
www.thomasclaudiushuber.com
22.06.2016 Developer Week 2016 - Nürnberg - Thomas Claudius Huber25

Weitere ähnliche Inhalte

Ähnlich wie Die SOLID-Prinzipien

Open Source Software: Einsatz, Entwicklung und Forschung
Open Source Software: Einsatz, Entwicklung und ForschungOpen Source Software: Einsatz, Entwicklung und Forschung
Open Source Software: Einsatz, Entwicklung und Forschung
Matthias Stürmer
 
Open source in der Unternehmenswelt
Open source in der UnternehmensweltOpen source in der Unternehmenswelt
Open source in der Unternehmenswelt
Forschungsstelle Digitale Nachhaltigkeit
 
Scrum und User Centered Design – wie geht das?, Usability Coffee, Bern, 12.04...
Scrum und User Centered Design – wie geht das?, Usability Coffee, Bern, 12.04...Scrum und User Centered Design – wie geht das?, Usability Coffee, Bern, 12.04...
Scrum und User Centered Design – wie geht das?, Usability Coffee, Bern, 12.04...
soultank AG
 
Webcast: Vorlagenmanagement - Best Practices 2015
Webcast: Vorlagenmanagement - Best Practices 2015Webcast: Vorlagenmanagement - Best Practices 2015
Webcast: Vorlagenmanagement - Best Practices 2015
COC AG
 
Weg mit dem "UCD-Prozess"! | Arno Bublitz World Usability Day 2016
Weg mit dem "UCD-Prozess"! | Arno Bublitz World Usability Day 2016Weg mit dem "UCD-Prozess"! | Arno Bublitz World Usability Day 2016
Weg mit dem "UCD-Prozess"! | Arno Bublitz World Usability Day 2016
abublitz
 
Scrum und User Centered Design – wie geht das?, Usability Coffee, Zug, 11.02....
Scrum und User Centered Design – wie geht das?, Usability Coffee, Zug, 11.02....Scrum und User Centered Design – wie geht das?, Usability Coffee, Zug, 11.02....
Scrum und User Centered Design – wie geht das?, Usability Coffee, Zug, 11.02....
soultank AG
 
SEO und Projektmanagement, Vortrag SEOKomm 2014
SEO und Projektmanagement, Vortrag SEOKomm 2014SEO und Projektmanagement, Vortrag SEOKomm 2014
SEO und Projektmanagement, Vortrag SEOKomm 2014
gudulafeichtinger
 
Cloud-native Apps - Architektur, Implementierung, Demo
Cloud-native Apps - Architektur, Implementierung, DemoCloud-native Apps - Architektur, Implementierung, Demo
Cloud-native Apps - Architektur, Implementierung, Demo
Andreas Koop
 
Cloud-native Apps – Architektur, Implementierung, Demo
Cloud-native Apps – Architektur, Implementierung, DemoCloud-native Apps – Architektur, Implementierung, Demo
Cloud-native Apps – Architektur, Implementierung, Demo
enpit GmbH & Co. KG
 
UXcamp Hamburg 2016 - Prototyping Tools and Workflows
UXcamp Hamburg 2016 - Prototyping Tools and WorkflowsUXcamp Hamburg 2016 - Prototyping Tools and Workflows
UXcamp Hamburg 2016 - Prototyping Tools and Workflows
Christian Graf
 
Agiles definieren einer Produktstrategie
Agiles definieren einer ProduktstrategieAgiles definieren einer Produktstrategie
Agiles definieren einer Produktstrategie
Cem Kulac
 
Langlebige Softwarearchitekturen - Der Umgang mit technischen Schulden
Langlebige Softwarearchitekturen - Der Umgang mit technischen SchuldenLanglebige Softwarearchitekturen - Der Umgang mit technischen Schulden
Langlebige Softwarearchitekturen - Der Umgang mit technischen Schulden
Carola Lilienthal
 
Open Source in der Schweiz
Open Source in der SchweizOpen Source in der Schweiz
Open Source in der Schweiz
Matthias Stürmer
 
Open Source Studie Schweiz 2015 – Und wie weiter?
Open Source Studie Schweiz 2015 – Und wie weiter?Open Source Studie Schweiz 2015 – Und wie weiter?
Open Source Studie Schweiz 2015 – Und wie weiter?
Matthias Stürmer
 
Agile UX, Ideation and Scrum Workshop, ditact Nov 2013 (German)
Agile UX, Ideation and Scrum Workshop, ditact Nov 2013 (German)Agile UX, Ideation and Scrum Workshop, ditact Nov 2013 (German)
Agile UX, Ideation and Scrum Workshop, ditact Nov 2013 (German)
Renate Pinggera
 
Produktentstehungsprozess Lean , agil, klassisch Auf den Mix kommt es an
Produktentstehungsprozess Lean , agil, klassisch Auf den Mix kommt es anProduktentstehungsprozess Lean , agil, klassisch Auf den Mix kommt es an
Produktentstehungsprozess Lean , agil, klassisch Auf den Mix kommt es an
Ayelt Komus
 
Die agile Organisation: Inhalt, Wege und Hürden aus Sicht eines CEO – der Fal...
Die agile Organisation: Inhalt, Wege und Hürden aus Sicht eines CEO – der Fal...Die agile Organisation: Inhalt, Wege und Hürden aus Sicht eines CEO – der Fal...
Die agile Organisation: Inhalt, Wege und Hürden aus Sicht eines CEO – der Fal...
marcus evans Network
 
Studentische Softwareentwicklung - Warum es keine Alternative zu agilen Metho...
Studentische Softwareentwicklung - Warum es keine Alternative zu agilen Metho...Studentische Softwareentwicklung - Warum es keine Alternative zu agilen Metho...
Studentische Softwareentwicklung - Warum es keine Alternative zu agilen Metho...
Wolfgang Reinhardt
 
[DE] Aktuelles zu Standards im Information Management | Dr. Ulrich Kampffmeye...
[DE] Aktuelles zu Standards im Information Management | Dr. Ulrich Kampffmeye...[DE] Aktuelles zu Standards im Information Management | Dr. Ulrich Kampffmeye...
[DE] Aktuelles zu Standards im Information Management | Dr. Ulrich Kampffmeye...
PROJECT CONSULT Unternehmensberatung Dr. Ulrich Kampffmeyer GmbH
 
Modulare Baukästen, Modularisierung und Produktplattformen:Vorstellung MB Col...
Modulare Baukästen, Modularisierung und Produktplattformen:Vorstellung MB Col...Modulare Baukästen, Modularisierung und Produktplattformen:Vorstellung MB Col...
Modulare Baukästen, Modularisierung und Produktplattformen:Vorstellung MB Col...
Daniel Mund
 

Ähnlich wie Die SOLID-Prinzipien (20)

Open Source Software: Einsatz, Entwicklung und Forschung
Open Source Software: Einsatz, Entwicklung und ForschungOpen Source Software: Einsatz, Entwicklung und Forschung
Open Source Software: Einsatz, Entwicklung und Forschung
 
Open source in der Unternehmenswelt
Open source in der UnternehmensweltOpen source in der Unternehmenswelt
Open source in der Unternehmenswelt
 
Scrum und User Centered Design – wie geht das?, Usability Coffee, Bern, 12.04...
Scrum und User Centered Design – wie geht das?, Usability Coffee, Bern, 12.04...Scrum und User Centered Design – wie geht das?, Usability Coffee, Bern, 12.04...
Scrum und User Centered Design – wie geht das?, Usability Coffee, Bern, 12.04...
 
Webcast: Vorlagenmanagement - Best Practices 2015
Webcast: Vorlagenmanagement - Best Practices 2015Webcast: Vorlagenmanagement - Best Practices 2015
Webcast: Vorlagenmanagement - Best Practices 2015
 
Weg mit dem "UCD-Prozess"! | Arno Bublitz World Usability Day 2016
Weg mit dem "UCD-Prozess"! | Arno Bublitz World Usability Day 2016Weg mit dem "UCD-Prozess"! | Arno Bublitz World Usability Day 2016
Weg mit dem "UCD-Prozess"! | Arno Bublitz World Usability Day 2016
 
Scrum und User Centered Design – wie geht das?, Usability Coffee, Zug, 11.02....
Scrum und User Centered Design – wie geht das?, Usability Coffee, Zug, 11.02....Scrum und User Centered Design – wie geht das?, Usability Coffee, Zug, 11.02....
Scrum und User Centered Design – wie geht das?, Usability Coffee, Zug, 11.02....
 
SEO und Projektmanagement, Vortrag SEOKomm 2014
SEO und Projektmanagement, Vortrag SEOKomm 2014SEO und Projektmanagement, Vortrag SEOKomm 2014
SEO und Projektmanagement, Vortrag SEOKomm 2014
 
Cloud-native Apps - Architektur, Implementierung, Demo
Cloud-native Apps - Architektur, Implementierung, DemoCloud-native Apps - Architektur, Implementierung, Demo
Cloud-native Apps - Architektur, Implementierung, Demo
 
Cloud-native Apps – Architektur, Implementierung, Demo
Cloud-native Apps – Architektur, Implementierung, DemoCloud-native Apps – Architektur, Implementierung, Demo
Cloud-native Apps – Architektur, Implementierung, Demo
 
UXcamp Hamburg 2016 - Prototyping Tools and Workflows
UXcamp Hamburg 2016 - Prototyping Tools and WorkflowsUXcamp Hamburg 2016 - Prototyping Tools and Workflows
UXcamp Hamburg 2016 - Prototyping Tools and Workflows
 
Agiles definieren einer Produktstrategie
Agiles definieren einer ProduktstrategieAgiles definieren einer Produktstrategie
Agiles definieren einer Produktstrategie
 
Langlebige Softwarearchitekturen - Der Umgang mit technischen Schulden
Langlebige Softwarearchitekturen - Der Umgang mit technischen SchuldenLanglebige Softwarearchitekturen - Der Umgang mit technischen Schulden
Langlebige Softwarearchitekturen - Der Umgang mit technischen Schulden
 
Open Source in der Schweiz
Open Source in der SchweizOpen Source in der Schweiz
Open Source in der Schweiz
 
Open Source Studie Schweiz 2015 – Und wie weiter?
Open Source Studie Schweiz 2015 – Und wie weiter?Open Source Studie Schweiz 2015 – Und wie weiter?
Open Source Studie Schweiz 2015 – Und wie weiter?
 
Agile UX, Ideation and Scrum Workshop, ditact Nov 2013 (German)
Agile UX, Ideation and Scrum Workshop, ditact Nov 2013 (German)Agile UX, Ideation and Scrum Workshop, ditact Nov 2013 (German)
Agile UX, Ideation and Scrum Workshop, ditact Nov 2013 (German)
 
Produktentstehungsprozess Lean , agil, klassisch Auf den Mix kommt es an
Produktentstehungsprozess Lean , agil, klassisch Auf den Mix kommt es anProduktentstehungsprozess Lean , agil, klassisch Auf den Mix kommt es an
Produktentstehungsprozess Lean , agil, klassisch Auf den Mix kommt es an
 
Die agile Organisation: Inhalt, Wege und Hürden aus Sicht eines CEO – der Fal...
Die agile Organisation: Inhalt, Wege und Hürden aus Sicht eines CEO – der Fal...Die agile Organisation: Inhalt, Wege und Hürden aus Sicht eines CEO – der Fal...
Die agile Organisation: Inhalt, Wege und Hürden aus Sicht eines CEO – der Fal...
 
Studentische Softwareentwicklung - Warum es keine Alternative zu agilen Metho...
Studentische Softwareentwicklung - Warum es keine Alternative zu agilen Metho...Studentische Softwareentwicklung - Warum es keine Alternative zu agilen Metho...
Studentische Softwareentwicklung - Warum es keine Alternative zu agilen Metho...
 
[DE] Aktuelles zu Standards im Information Management | Dr. Ulrich Kampffmeye...
[DE] Aktuelles zu Standards im Information Management | Dr. Ulrich Kampffmeye...[DE] Aktuelles zu Standards im Information Management | Dr. Ulrich Kampffmeye...
[DE] Aktuelles zu Standards im Information Management | Dr. Ulrich Kampffmeye...
 
Modulare Baukästen, Modularisierung und Produktplattformen:Vorstellung MB Col...
Modulare Baukästen, Modularisierung und Produktplattformen:Vorstellung MB Col...Modulare Baukästen, Modularisierung und Produktplattformen:Vorstellung MB Col...
Modulare Baukästen, Modularisierung und Produktplattformen:Vorstellung MB Col...
 

Mehr von Trivadis

Azure Days 2019: Azure Chatbot Development for Airline Irregularities (Remco ...
Azure Days 2019: Azure Chatbot Development for Airline Irregularities (Remco ...Azure Days 2019: Azure Chatbot Development for Airline Irregularities (Remco ...
Azure Days 2019: Azure Chatbot Development for Airline Irregularities (Remco ...
Trivadis
 
Azure Days 2019: Trivadis Azure Foundation – Das Fundament für den ... (Nisan...
Azure Days 2019: Trivadis Azure Foundation – Das Fundament für den ... (Nisan...Azure Days 2019: Trivadis Azure Foundation – Das Fundament für den ... (Nisan...
Azure Days 2019: Trivadis Azure Foundation – Das Fundament für den ... (Nisan...
Trivadis
 
Azure Days 2019: Business Intelligence auf Azure (Marco Amhof & Yves Mauron)
Azure Days 2019: Business Intelligence auf Azure (Marco Amhof & Yves Mauron)Azure Days 2019: Business Intelligence auf Azure (Marco Amhof & Yves Mauron)
Azure Days 2019: Business Intelligence auf Azure (Marco Amhof & Yves Mauron)
Trivadis
 
Azure Days 2019: Master the Move to Azure (Konrad Brunner)
Azure Days 2019: Master the Move to Azure (Konrad Brunner)Azure Days 2019: Master the Move to Azure (Konrad Brunner)
Azure Days 2019: Master the Move to Azure (Konrad Brunner)
Trivadis
 
Azure Days 2019: Keynote Azure Switzerland – Status Quo und Ausblick (Primo A...
Azure Days 2019: Keynote Azure Switzerland – Status Quo und Ausblick (Primo A...Azure Days 2019: Keynote Azure Switzerland – Status Quo und Ausblick (Primo A...
Azure Days 2019: Keynote Azure Switzerland – Status Quo und Ausblick (Primo A...
Trivadis
 
Azure Days 2019: Grösser und Komplexer ist nicht immer besser (Meinrad Weiss)
Azure Days 2019: Grösser und Komplexer ist nicht immer besser (Meinrad Weiss)Azure Days 2019: Grösser und Komplexer ist nicht immer besser (Meinrad Weiss)
Azure Days 2019: Grösser und Komplexer ist nicht immer besser (Meinrad Weiss)
Trivadis
 
Azure Days 2019: Get Connected with Azure API Management (Gerry Keune & Stefa...
Azure Days 2019: Get Connected with Azure API Management (Gerry Keune & Stefa...Azure Days 2019: Get Connected with Azure API Management (Gerry Keune & Stefa...
Azure Days 2019: Get Connected with Azure API Management (Gerry Keune & Stefa...
Trivadis
 
Azure Days 2019: Infrastructure as Code auf Azure (Jonas Wanninger & Daniel H...
Azure Days 2019: Infrastructure as Code auf Azure (Jonas Wanninger & Daniel H...Azure Days 2019: Infrastructure as Code auf Azure (Jonas Wanninger & Daniel H...
Azure Days 2019: Infrastructure as Code auf Azure (Jonas Wanninger & Daniel H...
Trivadis
 
Azure Days 2019: Wie bringt man eine Data Analytics Plattform in die Cloud? (...
Azure Days 2019: Wie bringt man eine Data Analytics Plattform in die Cloud? (...Azure Days 2019: Wie bringt man eine Data Analytics Plattform in die Cloud? (...
Azure Days 2019: Wie bringt man eine Data Analytics Plattform in die Cloud? (...
Trivadis
 
Azure Days 2019: Azure@Helsana: Die Erweiterung von Dynamics CRM mit Azure Po...
Azure Days 2019: Azure@Helsana: Die Erweiterung von Dynamics CRM mit Azure Po...Azure Days 2019: Azure@Helsana: Die Erweiterung von Dynamics CRM mit Azure Po...
Azure Days 2019: Azure@Helsana: Die Erweiterung von Dynamics CRM mit Azure Po...
Trivadis
 
TechEvent 2019: Kundenstory - Kein Angebot, kein Auftrag – Wie Du ein individ...
TechEvent 2019: Kundenstory - Kein Angebot, kein Auftrag – Wie Du ein individ...TechEvent 2019: Kundenstory - Kein Angebot, kein Auftrag – Wie Du ein individ...
TechEvent 2019: Kundenstory - Kein Angebot, kein Auftrag – Wie Du ein individ...
Trivadis
 
TechEvent 2019: Oracle Database Appliance M/L - Erfahrungen und Erfolgsmethod...
TechEvent 2019: Oracle Database Appliance M/L - Erfahrungen und Erfolgsmethod...TechEvent 2019: Oracle Database Appliance M/L - Erfahrungen und Erfolgsmethod...
TechEvent 2019: Oracle Database Appliance M/L - Erfahrungen und Erfolgsmethod...
Trivadis
 
TechEvent 2019: Security 101 für Web Entwickler; Roland Krüger - Trivadis
TechEvent 2019: Security 101 für Web Entwickler; Roland Krüger - TrivadisTechEvent 2019: Security 101 für Web Entwickler; Roland Krüger - Trivadis
TechEvent 2019: Security 101 für Web Entwickler; Roland Krüger - Trivadis
Trivadis
 
TechEvent 2019: Trivadis & Swisscom Partner Angebote; Konrad Häfeli, Markus O...
TechEvent 2019: Trivadis & Swisscom Partner Angebote; Konrad Häfeli, Markus O...TechEvent 2019: Trivadis & Swisscom Partner Angebote; Konrad Häfeli, Markus O...
TechEvent 2019: Trivadis & Swisscom Partner Angebote; Konrad Häfeli, Markus O...
Trivadis
 
TechEvent 2019: DBaaS from Swisscom Cloud powered by Trivadis; Konrad Häfeli ...
TechEvent 2019: DBaaS from Swisscom Cloud powered by Trivadis; Konrad Häfeli ...TechEvent 2019: DBaaS from Swisscom Cloud powered by Trivadis; Konrad Häfeli ...
TechEvent 2019: DBaaS from Swisscom Cloud powered by Trivadis; Konrad Häfeli ...
Trivadis
 
TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...
TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...
TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...
Trivadis
 
TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...
TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...
TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...
Trivadis
 
TechEvent 2019: Kundenstory - Vom Hauptmann zu Köpenick zum Polizisten 2020 -...
TechEvent 2019: Kundenstory - Vom Hauptmann zu Köpenick zum Polizisten 2020 -...TechEvent 2019: Kundenstory - Vom Hauptmann zu Köpenick zum Polizisten 2020 -...
TechEvent 2019: Kundenstory - Vom Hauptmann zu Köpenick zum Polizisten 2020 -...
Trivadis
 
TechEvent 2019: Vom Rechenzentrum in die Oracle Cloud - Übertragungsmethoden;...
TechEvent 2019: Vom Rechenzentrum in die Oracle Cloud - Übertragungsmethoden;...TechEvent 2019: Vom Rechenzentrum in die Oracle Cloud - Übertragungsmethoden;...
TechEvent 2019: Vom Rechenzentrum in die Oracle Cloud - Übertragungsmethoden;...
Trivadis
 
TechEvent 2019: The sleeping Power of Data; Eberhard Lösch - Trivadis
TechEvent 2019: The sleeping Power of Data; Eberhard Lösch - TrivadisTechEvent 2019: The sleeping Power of Data; Eberhard Lösch - Trivadis
TechEvent 2019: The sleeping Power of Data; Eberhard Lösch - Trivadis
Trivadis
 

Mehr von Trivadis (20)

Azure Days 2019: Azure Chatbot Development for Airline Irregularities (Remco ...
Azure Days 2019: Azure Chatbot Development for Airline Irregularities (Remco ...Azure Days 2019: Azure Chatbot Development for Airline Irregularities (Remco ...
Azure Days 2019: Azure Chatbot Development for Airline Irregularities (Remco ...
 
Azure Days 2019: Trivadis Azure Foundation – Das Fundament für den ... (Nisan...
Azure Days 2019: Trivadis Azure Foundation – Das Fundament für den ... (Nisan...Azure Days 2019: Trivadis Azure Foundation – Das Fundament für den ... (Nisan...
Azure Days 2019: Trivadis Azure Foundation – Das Fundament für den ... (Nisan...
 
Azure Days 2019: Business Intelligence auf Azure (Marco Amhof & Yves Mauron)
Azure Days 2019: Business Intelligence auf Azure (Marco Amhof & Yves Mauron)Azure Days 2019: Business Intelligence auf Azure (Marco Amhof & Yves Mauron)
Azure Days 2019: Business Intelligence auf Azure (Marco Amhof & Yves Mauron)
 
Azure Days 2019: Master the Move to Azure (Konrad Brunner)
Azure Days 2019: Master the Move to Azure (Konrad Brunner)Azure Days 2019: Master the Move to Azure (Konrad Brunner)
Azure Days 2019: Master the Move to Azure (Konrad Brunner)
 
Azure Days 2019: Keynote Azure Switzerland – Status Quo und Ausblick (Primo A...
Azure Days 2019: Keynote Azure Switzerland – Status Quo und Ausblick (Primo A...Azure Days 2019: Keynote Azure Switzerland – Status Quo und Ausblick (Primo A...
Azure Days 2019: Keynote Azure Switzerland – Status Quo und Ausblick (Primo A...
 
Azure Days 2019: Grösser und Komplexer ist nicht immer besser (Meinrad Weiss)
Azure Days 2019: Grösser und Komplexer ist nicht immer besser (Meinrad Weiss)Azure Days 2019: Grösser und Komplexer ist nicht immer besser (Meinrad Weiss)
Azure Days 2019: Grösser und Komplexer ist nicht immer besser (Meinrad Weiss)
 
Azure Days 2019: Get Connected with Azure API Management (Gerry Keune & Stefa...
Azure Days 2019: Get Connected with Azure API Management (Gerry Keune & Stefa...Azure Days 2019: Get Connected with Azure API Management (Gerry Keune & Stefa...
Azure Days 2019: Get Connected with Azure API Management (Gerry Keune & Stefa...
 
Azure Days 2019: Infrastructure as Code auf Azure (Jonas Wanninger & Daniel H...
Azure Days 2019: Infrastructure as Code auf Azure (Jonas Wanninger & Daniel H...Azure Days 2019: Infrastructure as Code auf Azure (Jonas Wanninger & Daniel H...
Azure Days 2019: Infrastructure as Code auf Azure (Jonas Wanninger & Daniel H...
 
Azure Days 2019: Wie bringt man eine Data Analytics Plattform in die Cloud? (...
Azure Days 2019: Wie bringt man eine Data Analytics Plattform in die Cloud? (...Azure Days 2019: Wie bringt man eine Data Analytics Plattform in die Cloud? (...
Azure Days 2019: Wie bringt man eine Data Analytics Plattform in die Cloud? (...
 
Azure Days 2019: Azure@Helsana: Die Erweiterung von Dynamics CRM mit Azure Po...
Azure Days 2019: Azure@Helsana: Die Erweiterung von Dynamics CRM mit Azure Po...Azure Days 2019: Azure@Helsana: Die Erweiterung von Dynamics CRM mit Azure Po...
Azure Days 2019: Azure@Helsana: Die Erweiterung von Dynamics CRM mit Azure Po...
 
TechEvent 2019: Kundenstory - Kein Angebot, kein Auftrag – Wie Du ein individ...
TechEvent 2019: Kundenstory - Kein Angebot, kein Auftrag – Wie Du ein individ...TechEvent 2019: Kundenstory - Kein Angebot, kein Auftrag – Wie Du ein individ...
TechEvent 2019: Kundenstory - Kein Angebot, kein Auftrag – Wie Du ein individ...
 
TechEvent 2019: Oracle Database Appliance M/L - Erfahrungen und Erfolgsmethod...
TechEvent 2019: Oracle Database Appliance M/L - Erfahrungen und Erfolgsmethod...TechEvent 2019: Oracle Database Appliance M/L - Erfahrungen und Erfolgsmethod...
TechEvent 2019: Oracle Database Appliance M/L - Erfahrungen und Erfolgsmethod...
 
TechEvent 2019: Security 101 für Web Entwickler; Roland Krüger - Trivadis
TechEvent 2019: Security 101 für Web Entwickler; Roland Krüger - TrivadisTechEvent 2019: Security 101 für Web Entwickler; Roland Krüger - Trivadis
TechEvent 2019: Security 101 für Web Entwickler; Roland Krüger - Trivadis
 
TechEvent 2019: Trivadis & Swisscom Partner Angebote; Konrad Häfeli, Markus O...
TechEvent 2019: Trivadis & Swisscom Partner Angebote; Konrad Häfeli, Markus O...TechEvent 2019: Trivadis & Swisscom Partner Angebote; Konrad Häfeli, Markus O...
TechEvent 2019: Trivadis & Swisscom Partner Angebote; Konrad Häfeli, Markus O...
 
TechEvent 2019: DBaaS from Swisscom Cloud powered by Trivadis; Konrad Häfeli ...
TechEvent 2019: DBaaS from Swisscom Cloud powered by Trivadis; Konrad Häfeli ...TechEvent 2019: DBaaS from Swisscom Cloud powered by Trivadis; Konrad Häfeli ...
TechEvent 2019: DBaaS from Swisscom Cloud powered by Trivadis; Konrad Häfeli ...
 
TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...
TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...
TechEvent 2019: Status of the partnership Trivadis and EDB - Comparing Postgr...
 
TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...
TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...
TechEvent 2019: More Agile, More AI, More Cloud! Less Work?!; Oliver Dörr - T...
 
TechEvent 2019: Kundenstory - Vom Hauptmann zu Köpenick zum Polizisten 2020 -...
TechEvent 2019: Kundenstory - Vom Hauptmann zu Köpenick zum Polizisten 2020 -...TechEvent 2019: Kundenstory - Vom Hauptmann zu Köpenick zum Polizisten 2020 -...
TechEvent 2019: Kundenstory - Vom Hauptmann zu Köpenick zum Polizisten 2020 -...
 
TechEvent 2019: Vom Rechenzentrum in die Oracle Cloud - Übertragungsmethoden;...
TechEvent 2019: Vom Rechenzentrum in die Oracle Cloud - Übertragungsmethoden;...TechEvent 2019: Vom Rechenzentrum in die Oracle Cloud - Übertragungsmethoden;...
TechEvent 2019: Vom Rechenzentrum in die Oracle Cloud - Übertragungsmethoden;...
 
TechEvent 2019: The sleeping Power of Data; Eberhard Lösch - Trivadis
TechEvent 2019: The sleeping Power of Data; Eberhard Lösch - TrivadisTechEvent 2019: The sleeping Power of Data; Eberhard Lösch - Trivadis
TechEvent 2019: The sleeping Power of Data; Eberhard Lösch - Trivadis
 

Die SOLID-Prinzipien

  • 1. BASEL BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENEVA HAMBURG COPENHAGEN LAUSANNE MUNICH STUTTGART VIENNA ZURICH Die S.O.L.I.D-Prinzipien für C# Entwickler Thomas Claudius Huber @ThomasClaudiusH
  • 2. Thomas Claudius Huber Developer Week 2016 - Nürnberg - Thomas Claudius Huber2 22.06.2016 Principal Consultant @ Trivadis AG Cloud Solutions Developer, Trainer, Architect Microsoft MVP for Windows Development Spezialisiert in WPF, Angular 2, C#, .NET, Azure What else: Pluralsight-Autor, Buchautor Fussball, Skaten, Fitness, Gitarre
  • 3. Agenda Developer Week 2016 - Nürnberg - Thomas Claudius Huber3 22.06.2016 1. Die S.O.L.I.D.-Prinzipien 2. Umsetzung in C# 3. Summary
  • 4. Developer Week 2016 - Nürnberg - Thomas Claudius Huber4 22.06.2016 1. Die S.O.L.I.D.-Prinzipien
  • 5. S.O.L.I.D.-Prinzipien Developer Week 2016 - Nürnberg - Thomas Claudius Huber5 22.06.2016 Fünf Prinzipien für wartbaren Code Nicht an eine Technologie gebunden Single Responsibility Open / Closed Liskov Substitution Interface Segregation Dependency Inversion
  • 6. Wo hat das Ganze seinen Ursprung Developer Week 2016 - Nürnberg - Thomas Claudius Huber6 22.06.2016 S.O.L.I.D.-Acronym wurde von Michael Feathers eingeführt – Basierend auf den ersten 5 objektorientierten Prinzipien von Robert C. Martin Werden die fünf Prinzipien angewendet, soll der Code wartbarer und leicht erweiterbar sein
  • 7. Developer Week 2016 - Nürnberg - Thomas Claudius Huber7 22.06.2016 2. Umsetzung in C#
  • 8. Ein Demo-Projekt Developer Week 2016 - Nürnberg - Thomas Claudius Huber8 22.06.2016 Ein einfacher File-Reader Let’s «hack» it down Demo
  • 9. Single Responsibility Principle (SRP) Developer Week 2016 - Nürnberg - Thomas Claudius Huber9 22.06.2016 “There is one and only one reason to change a class” Demo
  • 10. Single Responsibility Principle (SRP) Developer Week 2016 - Nürnberg - Thomas Claudius Huber10 22.06.2016 Weitere Beispiele
  • 11. Single Responsibility Principle (SRP) Developer Week 2016 - Nürnberg - Thomas Claudius Huber11 22.06.2016 Nur eine Verantwortlichkeit Gilt für alle Objekte: Assemblies, Klassen, Methoden Sorgt für wartbare, kleine Klassen
  • 12. Open/Closed Principle (OCP) Developer Week 2016 - Nürnberg - Thomas Claudius Huber12 22.06.2016 “Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification”
  • 13. Open/Closed Principle (OCP) Developer Week 2016 - Nürnberg - Thomas Claudius Huber13 22.06.2016 Open for Extension Closed for Modification Die Klasse kann um neue Anforderungen erweitert werden Bestehender Code wird nicht verändert
  • 14. Open/Closed Principle (OCP) Developer Week 2016 - Nürnberg - Thomas Claudius Huber14 22.06.2016 Änderungen durch Hinzufügen von neuem Code Änderungen NICHT durch Änderung von altem Code Der Schlüssel liegt in der Abstraktion Demo
  • 15. Open/Closed Principle (OCP) Developer Week 2016 - Nürnberg - Thomas Claudius Huber15 22.06.2016 Bestehender Code wird nicht geändert Unit Tests bleiben grün Manchmal schwierig was virtual ist und was nicht
  • 16. Liskov Substitution Principle (LSP) Developer Week 2016 - Nürnberg - Thomas Claudius Huber16 22.06.2016 “Objects in a program should be replaceable with instances of their subtypes without altering the correctness of that program”
  • 17. Liskov Substitution Principle (LSP) Developer Week 2016 - Nürnberg - Thomas Claudius Huber17 22.06.2016 Eine Erweiterung von OCP Sicherstellen, dass abgeleitete Klassen das Verhalten der Basisklasse nicht verändern Demo
  • 18. Interface Segregation Principle (ISP) Developer Week 2016 - Nürnberg - Thomas Claudius Huber18 22.06.2016 “Clients should not be forced to depend upon interfaces that they do not use”
  • 19. Interface Segregation Principle (ISP) Developer Week 2016 - Nürnberg - Thomas Claudius Huber19 22.06.2016 Grosse Interfaces = mehr Abhängigkeiten Interface Pollution (Clients müssen Member implementieren, welche sie nicht brauchen) Lösung: Keine „fat“ Interfaces, stattdessen viele kleine Interfaces Demo
  • 20. Dependency Inversion Principle (DIP) Developer Week 2016 - Nürnberg - Thomas Claudius Huber20 22.06.2016 “Depend upon Abstractions. Do not depend upon concretions”
  • 21. Dependency Inversion Principle (DIP) Developer Week 2016 - Nürnberg - Thomas Claudius Huber21 22.06.2016 Abstraktion durch Interfaces / abstrakte Basisklassen Code lässt sich ohne Implementierungen testen – Mocking von Interfaces Üblich wird zum Auflösen der Interfaces ein DI-Container genutzt Demo
  • 22. Developer Week 2016 - Nürnberg - Thomas Claudius Huber22 22.06.2016 3. Summary
  • 23. Anzeichen auf «stinkenden» Code Developer Week 2016 - Nürnberg - Thomas Claudius Huber23 22.06.2016 If-Statement, welches Typen unterscheidet -> OCP Interface-Methoden, welche in vielen Fällen nicht implementiert werden müssen -> ISP FAT Interfaces -> ISP Methodennamen wie: UpdateAndSaveCustomer(), VerifyAndSaveData() -> SRP Klassennamen wie CustomerManager -> SRP
  • 24. S.O.L.I.D.-Summary Developer Week 2016 - Nürnberg - Thomas Claudius Huber24 22.06.2016 Hilft wartbaren Code zu schreiben Projekte bekommen eine gute Struktur Es sind lediglich Prinzipien – Nicht übertreiben. 