Wyboista droga do dobrego kodu.

11
Wyboista droga do Dobrego Kodu Szymon Homa

description

Szymon Homa - prezentacja z III edycji konferencji Quality Excites.

Transcript of Wyboista droga do dobrego kodu.

Page 1: Wyboista droga do dobrego kodu.

Wyboista droga do Dobrego Kodu

Szymon Homa

Page 2: Wyboista droga do dobrego kodu.

Jaki jest Dobry Kod?

Pilnuje zasad SOLID?

Jest testowalny?

Dba o zasady Clean Code?

Jasno wyraża intencje?

Microsoft account
Czym jest dobry kod? (łatwy w utrzymaniu, czytelny, SOLID?, wytestowany, testowalny)
Page 3: Wyboista droga do dobrego kodu.

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.

Page 4: Wyboista droga do dobrego kodu.

A może jakiś klucz?

Alistair Cockburn, Hexagonal Architecture

Appl

icatio

nSe

rvice

s

Domain Model

Repo

sitor

ies

Event

Producers

Event

Listeners

GUI A

dapt

ers

Queue Adapters

Queue Adapters

Pers

isten

ce A

dapt

ers

Page 5: Wyboista droga do dobrego kodu.

A może jakiś klucz?

Alistair Cockburn, Hexagonal Architecture

Appl

icatio

nSe

rvice

s

Domain Model

Repo

sitor

ies

Event

Producers

Event

Listeners

GUI A

dapt

ers

Queue Adapters

Queue Adapters

Pers

isten

ce A

dapt

ers

Czysty Kod

TDD – testy jednostkowe pisane w większości przypadków bezużywania Test Double

Wyrażający intencje model obiektowy (DDD/RDD)

Page 6: Wyboista droga do dobrego kodu.

A może jakiś klucz?

Alistair Cockburn, Hexagonal Architecture

Appl

icatio

nSe

rvice

s

Domain Model

Repo

sitor

ies

Event

Producers

Event

Listeners

GUI A

dapt

ers

Queue Adapters

Queue Adapters

Pers

isten

ce A

dapt

ers

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)

Page 7: Wyboista droga do dobrego kodu.

Appl

icatio

nSe

rvice

s

Repo

sitor

ies

Event

Producers

Event

Listeners

GUI A

dapt

ers

Queue Adapters

Queue Adapters

Pers

isten

ce A

dapt

ers

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)

Page 8: Wyboista droga do dobrego kodu.

Oznaki zatracenia?

Alistair Cockburn, Hexagonal Architecture

Appl

icatio

nSe

rvice

s

Domain Model

Repo

sitor

ies

Event

Producers

Event

Listeners

GUI A

dapt

ers

Queue Adapters

Queue Adapters

Pers

isten

ce A

dapt

ers

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.

Page 9: Wyboista droga do dobrego kodu.

Appl

icatio

nSe

rvice

s

Repo

sitor

ies

Event

Producers

Event

Listeners

GUI A

dapt

ers

Queue Adapters

Queue Adapters

Pers

isten

ce A

dapt

ers

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.

Page 10: Wyboista droga do dobrego kodu.

Czy zawsze warto?

Duża zmienność wymagań

Skomplikowana domena problemu

Brak odpowiednich umiejętności w zespole

Proces nieiteracyjny / jedno końcowe wydanie

Page 11: Wyboista droga do dobrego kodu.

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