SlideShare ist ein Scribd-Unternehmen logo
1 von 11
Wyboista droga do
Dobrego Kodu
Szymon Homa
Jaki jest Dobry Kod?
Pilnuje zasad SOLID?
Jest testowalny?
Dba o zasady Clean Code?
Jasno wyraża intencje?
Jaki jest Dobry Kod?
Jest skoncentrowany na dostarczaniu wartości zgodnie z jego przeznaczeniem.
Pozwala na łatwy rozwój systemu w oparciu o aktualną wiedzę.
Dobiera rozwiązania do potrzeb, nie nagina rzeczywistości.
A może jakiś klucz?
Alistair Cockburn, Hexagonal Architecture
Domain
Model
A może jakiś klucz?
Alistair Cockburn, Hexagonal Architecture
Domain
Model
Czysty Kod
TDD – testy jednostkowe pisane w większości przypadków bez
używania Test Double
Wyrażający intencje model
obiektowy (DDD/RDD)
A może jakiś klucz?
Alistair Cockburn, Hexagonal Architecture
Domain
Model
Czysty Kod
TDD – testy jednostkowe pisane z użyciem Test Double wszędzie,
gdzie badamy interakcje między różnymi komponentami systemu
Szyte na miarę kontrakty serwisów
domenowych, zdarzeń aplikacji, bram itd.
(DDD/RDD)
A może jakiś klucz?
Alistair Cockburn, Hexagonal Architecture
Domain
Model
„Czytelny” Kod– większość kluczowej logiki
powinna być gdzie indziej
TDD – głównie „lekkie” testy integracyjne
pokrywające interakcje między warstwami
(np. Repository+Pesistence Adapters)
Maksymalne użycie frameworków i narzędzi
wspomagających
ATDD/BDD – testy akceptacyjne działające
przez punkty wejścia do systemu
(np. Application Services, Event Listeners)
Oznaki zatracenia?
Alistair Cockburn, Hexagonal Architecture
Domain
Model
Przeładowane Interfejsy.
Zazdrosne Metody.
Długie listy parametrów.
Duplikacja tych samych przypadków testowych
w wielu klasach
Skupienie na danych zamiast na zachowaniach.
Zaburzenia hermetyzacji, set/get dla wszystkich.
Nieznajomość wzorców projektowych.
Brak jawnej deklaracji zachowań i oczekiwań.
Złamanie zasad SOLID.
Nadużywanie wzorca Test Double.
Niechęć do małych klas.
Oznaki zatracenia?
Alistair Cockburn, Hexagonal Architecture
Domain
Model
Implementacja dodatkowych funkcjonalności,
nie używanych przez logikę aplikacji.
Nic nie wnoszące, trudne w utrzymaniu testy jednostkowe.
Budowanie własnych narzędzi w sposób nazbyt
ogólny.
Skomplikowany kod.
Budowanie własnych frameworków.
Czy zawsze warto?
Duża zmienność wymagań
Skomplikowana domena problemu
Brak odpowiednich umiejętności w zespole
Proces nieiteracyjny / jedno końcowe wydanie
Dziękuję za uwagę.
Co Dalej?
• Andrew Hunt, David Thomas, „Pragmatyczny programista. Od czeladnika do mistrza”, Helion S.A. 2011
• Martin Fowler, Kent Beck, „Refaktoryzacja: Ulepszanie struktury istniejącego kodu”, Helion S.A. 2011
• Robert C. Martin, „Czysty Kod, Podręcznik Dobrego Programisty”, Helion S.A. 2010
• Gerard Meszaros, „xUnit Test Patterns: Refactoring Test Code”, Addison-Wesley 2007
• Martin Fowler, „Patterns of Enterprise Application Architecture”, Addison-Wesley 2002
• Eric Evans, „Domain Driven Design: Tackling Complexity in the Heart of Software”, Addison-Wesley 2003

Weitere ähnliche Inhalte

Andere mochten auch

Czy warstwa sprzętowa wyklucza testy automatyczne?
Czy warstwa sprzętowa wyklucza testy automatyczne?Czy warstwa sprzętowa wyklucza testy automatyczne?
Czy warstwa sprzętowa wyklucza testy automatyczne?Future Processing
 
Michał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktyka
Michał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktykaMichał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktyka
Michał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktykaFuture Processing
 
Wydajne API dla aplikacji mobilnych
Wydajne API dla aplikacji mobilnychWydajne API dla aplikacji mobilnych
Wydajne API dla aplikacji mobilnychFuture Processing
 
Continuous Delivery – kolejny krok na drodze do Agile.
Continuous Delivery – kolejny krok na drodze do Agile.Continuous Delivery – kolejny krok na drodze do Agile.
Continuous Delivery – kolejny krok na drodze do Agile.Future Processing
 
Koncert życzeń + niekończące się zmiany w koncepcji = katastrofa? Jak to posk...
Koncert życzeń + niekończące się zmiany w koncepcji = katastrofa? Jak to posk...Koncert życzeń + niekończące się zmiany w koncepcji = katastrofa? Jak to posk...
Koncert życzeń + niekończące się zmiany w koncepcji = katastrofa? Jak to posk...Future Processing
 
Behaviour Driven Development
Behaviour Driven DevelopmentBehaviour Driven Development
Behaviour Driven DevelopmentFuture Processing
 
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...Future Processing
 
Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.
Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.
Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.Future Processing
 
Biznes nie dorósł do Agile.
Biznes nie dorósł do Agile.Biznes nie dorósł do Agile.
Biznes nie dorósł do Agile.Future Processing
 
Testy to za mało – czyli słów kilka o jakości w oprogramowaniu: czym jest, ja...
Testy to za mało – czyli słów kilka o jakości w oprogramowaniu: czym jest, ja...Testy to za mało – czyli słów kilka o jakości w oprogramowaniu: czym jest, ja...
Testy to za mało – czyli słów kilka o jakości w oprogramowaniu: czym jest, ja...Future Processing
 
Bilans korzyści i kosztów z automatyzacji.
Bilans korzyści i kosztów z automatyzacji.Bilans korzyści i kosztów z automatyzacji.
Bilans korzyści i kosztów z automatyzacji.Future Processing
 
[FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe!
[FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe![FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe!
[FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe!Future Processing
 
[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentów
[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentów[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentów
[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentówFuture Processing
 
[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i Praktyka
[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i Praktyka[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i Praktyka
[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i PraktykaFuture Processing
 
Analiza wydajności następnej generacji - przykłady.
Analiza wydajności następnej generacji - przykłady.Analiza wydajności następnej generacji - przykłady.
Analiza wydajności następnej generacji - przykłady.Future Processing
 
[FDD 2016] Pablo Ribalta - Deep Learning
[FDD 2016] Pablo Ribalta - Deep Learning[FDD 2016] Pablo Ribalta - Deep Learning
[FDD 2016] Pablo Ribalta - Deep LearningFuture Processing
 
Konferencja Quality Excites w pigułce.
Konferencja Quality Excites w pigułce.Konferencja Quality Excites w pigułce.
Konferencja Quality Excites w pigułce.Future Processing
 
Środowisko testowe pod REST-a
Środowisko testowe pod REST-aŚrodowisko testowe pod REST-a
Środowisko testowe pod REST-aFuture Processing
 

Andere mochten auch (20)

Czy warstwa sprzętowa wyklucza testy automatyczne?
Czy warstwa sprzętowa wyklucza testy automatyczne?Czy warstwa sprzętowa wyklucza testy automatyczne?
Czy warstwa sprzętowa wyklucza testy automatyczne?
 
Michał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktyka
Michał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktykaMichał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktyka
Michał Sajdak, Testy bezpieczeństwa -­‐ teoria a praktyka
 
Wydajne API dla aplikacji mobilnych
Wydajne API dla aplikacji mobilnychWydajne API dla aplikacji mobilnych
Wydajne API dla aplikacji mobilnych
 
Continuous Delivery – kolejny krok na drodze do Agile.
Continuous Delivery – kolejny krok na drodze do Agile.Continuous Delivery – kolejny krok na drodze do Agile.
Continuous Delivery – kolejny krok na drodze do Agile.
 
Jakość jest w nas
Jakość jest w nasJakość jest w nas
Jakość jest w nas
 
Kim jest Agile Coach?
Kim jest Agile Coach?Kim jest Agile Coach?
Kim jest Agile Coach?
 
Koncert życzeń + niekończące się zmiany w koncepcji = katastrofa? Jak to posk...
Koncert życzeń + niekończące się zmiany w koncepcji = katastrofa? Jak to posk...Koncert życzeń + niekończące się zmiany w koncepcji = katastrofa? Jak to posk...
Koncert życzeń + niekończące się zmiany w koncepcji = katastrofa? Jak to posk...
 
Behaviour Driven Development
Behaviour Driven DevelopmentBehaviour Driven Development
Behaviour Driven Development
 
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...
 
Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.
Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.
Nie rozwiązuj w testach jednostkowych problemów z testowanym kodem.
 
Biznes nie dorósł do Agile.
Biznes nie dorósł do Agile.Biznes nie dorósł do Agile.
Biznes nie dorósł do Agile.
 
Testy to za mało – czyli słów kilka o jakości w oprogramowaniu: czym jest, ja...
Testy to za mało – czyli słów kilka o jakości w oprogramowaniu: czym jest, ja...Testy to za mało – czyli słów kilka o jakości w oprogramowaniu: czym jest, ja...
Testy to za mało – czyli słów kilka o jakości w oprogramowaniu: czym jest, ja...
 
Bilans korzyści i kosztów z automatyzacji.
Bilans korzyści i kosztów z automatyzacji.Bilans korzyści i kosztów z automatyzacji.
Bilans korzyści i kosztów z automatyzacji.
 
[FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe!
[FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe![FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe!
[FDD2016] Rafał Brzoska - Angular2 - nadchodzi nowe!
 
[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentów
[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentów[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentów
[FDD 2016] Jarosław Porwoł - Koncert na 144 rdzenie i czterech dyrygentów
 
[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i Praktyka
[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i Praktyka[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i Praktyka
[QE 2015] Łukasz Szydło - Continuous Delivery – Architektura i Praktyka
 
Analiza wydajności następnej generacji - przykłady.
Analiza wydajności następnej generacji - przykłady.Analiza wydajności następnej generacji - przykłady.
Analiza wydajności następnej generacji - przykłady.
 
[FDD 2016] Pablo Ribalta - Deep Learning
[FDD 2016] Pablo Ribalta - Deep Learning[FDD 2016] Pablo Ribalta - Deep Learning
[FDD 2016] Pablo Ribalta - Deep Learning
 
Konferencja Quality Excites w pigułce.
Konferencja Quality Excites w pigułce.Konferencja Quality Excites w pigułce.
Konferencja Quality Excites w pigułce.
 
Środowisko testowe pod REST-a
Środowisko testowe pod REST-aŚrodowisko testowe pod REST-a
Środowisko testowe pod REST-a
 

Ähnlich wie Wyboista droga do dobrego kodu.

Spring - extending Spring IDE
Spring - extending Spring IDESpring - extending Spring IDE
Spring - extending Spring IDECode-House
 
Techniczna organizacja zespołu
Techniczna organizacja zespołuTechniczna organizacja zespołu
Techniczna organizacja zespołuintive
 
Dwa sposoby na pisanie aplikacji bez błędów
Dwa sposoby na pisanie aplikacji bez błędówDwa sposoby na pisanie aplikacji bez błędów
Dwa sposoby na pisanie aplikacji bez błędówMichal Lukaszewski
 
Domain Driven Design, czyli progamowanie przez modelowanie
Domain Driven Design, czyli progamowanie przez modelowanieDomain Driven Design, czyli progamowanie przez modelowanie
Domain Driven Design, czyli progamowanie przez modelowanieSzymonPobiega
 
Więcej testów/mniej kodu - Michał Gaworski, kraQA 13
Więcej testów/mniej kodu - Michał Gaworski, kraQA 13Więcej testów/mniej kodu - Michał Gaworski, kraQA 13
Więcej testów/mniej kodu - Michał Gaworski, kraQA 13kraqa
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowychTomasz Borowski
 
Development Tools Ecosystem
Development Tools EcosystemDevelopment Tools Ecosystem
Development Tools EcosystemMatt Harasymczuk
 
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...Michal Furmankiewicz
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Cloudskraqa
 
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...Infoshare
 
Skok na naderwanym bungee, czyli agile bez automatyzacji
Skok na naderwanym bungee, czyli agile bez automatyzacjiSkok na naderwanym bungee, czyli agile bez automatyzacji
Skok na naderwanym bungee, czyli agile bez automatyzacjiWitold Bołt
 
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacjiInfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacjiJIT Solutions
 
CI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieCI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieGrzegorz Godlewski
 
Strategie automatyzacji testow
Strategie automatyzacji testowStrategie automatyzacji testow
Strategie automatyzacji testowWiktor Żołnowski
 
Czym jest złożoność ?
Czym jest złożoność ?Czym jest złożoność ?
Czym jest złożoność ?GOG.com dev team
 
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gier
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gierKonrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gier
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gierGameDesire Academy
 
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Dariusz Kacban
 
Pułapki programowania obiektowego
Pułapki programowania obiektowego Pułapki programowania obiektowego
Pułapki programowania obiektowego Adam Sawicki
 

Ähnlich wie Wyboista droga do dobrego kodu. (20)

Spring - extending Spring IDE
Spring - extending Spring IDESpring - extending Spring IDE
Spring - extending Spring IDE
 
Techniczna organizacja zespołu
Techniczna organizacja zespołuTechniczna organizacja zespołu
Techniczna organizacja zespołu
 
Dwa sposoby na pisanie aplikacji bez błędów
Dwa sposoby na pisanie aplikacji bez błędówDwa sposoby na pisanie aplikacji bez błędów
Dwa sposoby na pisanie aplikacji bez błędów
 
Domain Driven Design, czyli progamowanie przez modelowanie
Domain Driven Design, czyli progamowanie przez modelowanieDomain Driven Design, czyli progamowanie przez modelowanie
Domain Driven Design, czyli progamowanie przez modelowanie
 
Więcej testów/mniej kodu - Michał Gaworski, kraQA 13
Więcej testów/mniej kodu - Michał Gaworski, kraQA 13Więcej testów/mniej kodu - Michał Gaworski, kraQA 13
Więcej testów/mniej kodu - Michał Gaworski, kraQA 13
 
Clean code w Ruby
Clean code w RubyClean code w Ruby
Clean code w Ruby
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
Development Tools Ecosystem
Development Tools EcosystemDevelopment Tools Ecosystem
Development Tools Ecosystem
 
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Clouds
 
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
 
Skok na naderwanym bungee, czyli agile bez automatyzacji
Skok na naderwanym bungee, czyli agile bez automatyzacjiSkok na naderwanym bungee, czyli agile bez automatyzacji
Skok na naderwanym bungee, czyli agile bez automatyzacji
 
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacjiInfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
 
CI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieCI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecie
 
Strategie automatyzacji testow
Strategie automatyzacji testowStrategie automatyzacji testow
Strategie automatyzacji testow
 
Czym jest złożoność ?
Czym jest złożoność ?Czym jest złożoność ?
Czym jest złożoność ?
 
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gier
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gierKonrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gier
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gier
 
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
 
Scala
ScalaScala
Scala
 
Pułapki programowania obiektowego
Pułapki programowania obiektowego Pułapki programowania obiektowego
Pułapki programowania obiektowego
 

Mehr von Future Processing

DPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdfDPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdfFuture Processing
 
DPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdfDPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdfFuture Processing
 
DPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdfDPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdfFuture Processing
 
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurzeFuture Processing
 
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shakeFuture Processing
 
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myśleniaFuture Processing
 
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletkaFuture Processing
 
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...Future Processing
 
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...Future Processing
 
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny BlockchainFuture Processing
 
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈XFuture Processing
 
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...Future Processing
 
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...Future Processing
 
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NETFuture Processing
 
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...Future Processing
 
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...Future Processing
 
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark ApplicationsFuture Processing
 
[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test AutomationFuture Processing
 
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software TesterFuture Processing
 
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOpsFuture Processing
 

Mehr von Future Processing (20)

DPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdfDPTO_Inżynieria oprogramowania to proces uczenia się.pdf
DPTO_Inżynieria oprogramowania to proces uczenia się.pdf
 
DPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdfDPTO_QA w świecie wartości biznesowych.pdf
DPTO_QA w świecie wartości biznesowych.pdf
 
DPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdfDPTO_Hello_Clean_Architekture.pdf
DPTO_Hello_Clean_Architekture.pdf
 
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
[Quality Meetup #20] Michał Górski - Continuous Deployment w chmurze
 
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
[Quality Meetup #20] Dorota Tadych - Hyperion - wystarczy jeden shake
 
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
[Quality Meetup #19] Magdalena Drechsler-Nowak - Tester w pułapce myślenia
 
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
[Quality Meetup #19] Adrian Gonciarz - Testerska ruletka
 
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
[FDD 2018] Krzysztof Sikora - Jak Service Fabric rozwiąże twoje problemy z mi...
 
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
 
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
 
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
 
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OA...
 
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
 
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
 
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
 
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
 
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
 
[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation
 
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
 
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
 

Wyboista droga do dobrego kodu.

  • 1. Wyboista droga do Dobrego Kodu Szymon Homa
  • 2. Jaki jest Dobry Kod? Pilnuje zasad SOLID? Jest testowalny? Dba o zasady Clean Code? Jasno wyraża intencje?
  • 3. Jaki jest Dobry Kod? Jest skoncentrowany na dostarczaniu wartości zgodnie z jego przeznaczeniem. Pozwala na łatwy rozwój systemu w oparciu o aktualną wiedzę. Dobiera rozwiązania do potrzeb, nie nagina rzeczywistości.
  • 4. A może jakiś klucz? Alistair Cockburn, Hexagonal Architecture Domain Model
  • 5. A może jakiś klucz? Alistair Cockburn, Hexagonal Architecture Domain Model Czysty Kod TDD – testy jednostkowe pisane w większości przypadków bez używania Test Double Wyrażający intencje model obiektowy (DDD/RDD)
  • 6. A może jakiś klucz? Alistair Cockburn, Hexagonal Architecture Domain Model Czysty Kod TDD – testy jednostkowe pisane z użyciem Test Double wszędzie, gdzie badamy interakcje między różnymi komponentami systemu Szyte na miarę kontrakty serwisów domenowych, zdarzeń aplikacji, bram itd. (DDD/RDD)
  • 7. A może jakiś klucz? Alistair Cockburn, Hexagonal Architecture Domain Model „Czytelny” Kod– większość kluczowej logiki powinna być gdzie indziej TDD – głównie „lekkie” testy integracyjne pokrywające interakcje między warstwami (np. Repository+Pesistence Adapters) Maksymalne użycie frameworków i narzędzi wspomagających ATDD/BDD – testy akceptacyjne działające przez punkty wejścia do systemu (np. Application Services, Event Listeners)
  • 8. Oznaki zatracenia? Alistair Cockburn, Hexagonal Architecture Domain Model Przeładowane Interfejsy. Zazdrosne Metody. Długie listy parametrów. Duplikacja tych samych przypadków testowych w wielu klasach Skupienie na danych zamiast na zachowaniach. Zaburzenia hermetyzacji, set/get dla wszystkich. Nieznajomość wzorców projektowych. Brak jawnej deklaracji zachowań i oczekiwań. Złamanie zasad SOLID. Nadużywanie wzorca Test Double. Niechęć do małych klas.
  • 9. Oznaki zatracenia? Alistair Cockburn, Hexagonal Architecture Domain Model Implementacja dodatkowych funkcjonalności, nie używanych przez logikę aplikacji. Nic nie wnoszące, trudne w utrzymaniu testy jednostkowe. Budowanie własnych narzędzi w sposób nazbyt ogólny. Skomplikowany kod. Budowanie własnych frameworków.
  • 10. Czy zawsze warto? Duża zmienność wymagań Skomplikowana domena problemu Brak odpowiednich umiejętności w zespole Proces nieiteracyjny / jedno końcowe wydanie
  • 11. Dziękuję za uwagę. Co Dalej? • Andrew Hunt, David Thomas, „Pragmatyczny programista. Od czeladnika do mistrza”, Helion S.A. 2011 • Martin Fowler, Kent Beck, „Refaktoryzacja: Ulepszanie struktury istniejącego kodu”, Helion S.A. 2011 • Robert C. Martin, „Czysty Kod, Podręcznik Dobrego Programisty”, Helion S.A. 2010 • Gerard Meszaros, „xUnit Test Patterns: Refactoring Test Code”, Addison-Wesley 2007 • Martin Fowler, „Patterns of Enterprise Application Architecture”, Addison-Wesley 2002 • Eric Evans, „Domain Driven Design: Tackling Complexity in the Heart of Software”, Addison-Wesley 2003