SlideShare a Scribd company logo
1 of 67
Download to read offline
Jak zniszczyć swój kod?
Podstawy lingwistyki dla programistów
Zwiększamy efektywność zespołów
projektowych
1
www.bnsit.pl
Michał Bartyzel
mbartyzel.blogspot.com
@MichalBartyzelZwiększamy efektywność zespołów projektowych 2
www.bnsit.pl
Nazwa, którą ja się posługiwałem Nazwa, którą zobaczyłem
Moja kinoteka
Dodaj serial
Dodaj odcinek
Opłacony/nieopłacony
Etykiety
Czas trwania: h 35 min.
Dr Home. Sezon 1 odcinek 29
Nonszalancja nazewnicza
Zwiększamy efektywność zespołów projektowych 3
www.bnsit.pl
Nazwa, którą ja się posługiwałem Nazwa, którą zobaczyłem
Moja kinoteka Lista filmów
Dodaj serial
Dodaj odcinek
Opłacony/nieopłacony
Etykiety
Czas trwania: h 35 min.
Dr Home. Sezon 1 odcinek 29
Nonszalancja nazewnicza
Zwiększamy efektywność zespołów projektowych 4
www.bnsit.pl
Nazwa, którą ja się posługiwałem Nazwa, którą zobaczyłem
Moja kinoteka Lista filmów
Dodaj serial Dodaj kategorię
Dodaj odcinek
Opłacony/nieopłacony
Etykiety
Czas trwania: h 35 min.
Dr Home. Sezon 1 odcinek 29
Nonszalancja nazewnicza
Zwiększamy efektywność zespołów projektowych 5
www.bnsit.pl
Nazwa, którą ja się posługiwałem Nazwa, którą zobaczyłem
Moja kinoteka Lista filmów
Dodaj serial Dodaj kategorię
Dodaj odcinek Dodaj plik flv
Opłacony/nieopłacony
Etykiety
Czas trwania: h 35 min.
Dr Home. Sezon 1 odcinek 29
Nonszalancja nazewnicza
Zwiększamy efektywność zespołów projektowych 6
www.bnsit.pl
Nazwa, którą ja się posługiwałem Nazwa, którą zobaczyłem
Moja kinoteka Lista filmów
Dodaj serial Dodaj kategorię
Dodaj odcinek Dodaj plik flv
Opłacony/nieopłacony Status [checkbox]
Etykiety
Czas trwania: h 35 min.
Dr Home. Sezon 1 odcinek 29
Nonszalancja nazewnicza
Zwiększamy efektywność zespołów projektowych 7
www.bnsit.pl
Nazwa, którą ja się posługiwałem Nazwa, którą zobaczyłem
Moja kinoteka Lista filmów
Dodaj serial Dodaj kategorię
Dodaj odcinek Dodaj plik flv
Opłacony/nieopłacony Status [checkbox]
Etykiety Chmura tagów
Czas trwania: h 35 min.
Dr Home. Sezon 1 odcinek 29
Nonszalancja nazewnicza
Zwiększamy efektywność zespołów projektowych 8
www.bnsit.pl
Nazwa, którą ja się posługiwałem Nazwa, którą zobaczyłem
Moja kinoteka Lista filmów
Dodaj serial Dodaj kategorię
Dodaj odcinek Dodaj plik flv
Opłacony/nieopłacony Status [checkbox]
Etykiety Chmura tagów
Czas trwania: h 35 min. Długość: 2 100 000 ms
Dr Home. Sezon 1 odcinek 29
Nonszalancja nazewnicza
Zwiększamy efektywność zespołów projektowych 9
www.bnsit.pl
Nazwa, którą ja się posługiwałem Nazwa, którą zobaczyłem
Moja kinoteka Lista filmów
Dodaj serial Dodaj kategorię
Dodaj odcinek Dodaj plik flv
Opłacony/nieopłacony Status [checkbox]
Etykiety Chmura tagów
Czas trwania: h 35 min. Długość: 2 100 000 ms
Dr Home. Sezon 1 odcinek 29 87a1b230ff910912.flv
Nonszalancja nazewnicza
Zwiększamy efektywność zespołów projektowych 10
www.bnsit.pl
Rzeczywistość, słowa, znaczenia, reguły
Zwiększamy efektywność zespołów projektowych 11
www.bnsit.pl
Rzeczywistość, słowa, znaczenia, reguły
Zwiększamy efektywność zespołów projektowych 12
www.bnsit.pl
Co można zrobić z…
Zwiększamy efektywność zespołów projektowych 13
Listą pracowników Ewidencją pracowników
• Dodać pracownika
• Usunąć pracownika
• Usunąć wszystkich
pracowników
• Wciągnąć pracownika do
ewidencji
• Wyciągnąć kartotekę pracownika
• Oznaczyć urlop
• Oznaczyć zwolnienie chorobowe
• Wyciągnąć świadectwo pracy
www.bnsit.pl
Programujesz to, co nazywasz
Zwiększamy efektywność zespołów projektowych 14
List<Employee> employees...
//...
EmployeeFile employeeFile = findEmployeeFile( personalID );
employeeFile.getEmergencyContactInformation();
www.bnsit.pl
A potem powstaje architektura
Zwiększamy efektywność zespołów projektowych 15
List<Employee> employees...
//...
EmployeeFile employeeFile = findEmployeeFile( personalID );
employeeFile.getEmergencyContactInformation();
www.bnsit.pl
I dzieją się z nią dziwne rzeczy
Zwiększamy efektywność zespołów projektowych 16
www.bnsit.pl
Ile %% wymagań naprawdę się zmienia?
Zwiększamy efektywność zespołów projektowych 17
www.bnsit.pl
Jakie znaczenie może mieć słowo?
Zwiększamy efektywność zespołów projektowych 18
www.bnsit.pl
S.O.L.I.D
Podstawowe zasady
Zwiększamy efektywność zespołów projektowych 19
www.bnsit.pl
Przykład: Geometria euklidesowa ;)
Zwiększamy efektywność zespołów projektowych 20
www.bnsit.pl
Przykład: Geometria euklidesowa ;)
Zwiększamy efektywność zespołów projektowych 21
www.bnsit.pl
... ale jeśli nie znasz podstawowych zasad
Zwiększamy efektywność zespołów projektowych 22
www.bnsit.pl
S.O.L.I.D
Podstawowe zasady
Zwiększamy efektywność zespołów projektowych 23
www.bnsit.pl
# To jest proste?
• Koncepcyjnie proste, logicznie proste, eleganckie
• Lecz wcale nie tak łatwe do zastosowania
# To jest dla początkujących?
• Podstawy nie oznaczają rzeczy najłatwiejszych
lecz p o d s t a w ę
• Trzeba sporo doświadczenia, aby zajmować się
sprawami oczywistymi
To zbyt banalne?
Zwiększamy efektywność zespołów projektowych 24
www.bnsit.pl
Co chcemy zacząć zauważać?
Zwiększamy efektywność zespołów projektowych 25
www.bnsit.pl
Nazwa klasy cLOC
LocationManager 26 752
NetworkItem 10 955
TransferOperations 6 871
CalculatorsManager 4 325
MonitorManager 1 514
VTViewInvoker 48
ContactService 47
Address 34
DataRange 21
LoggedUserDetailsModel 13
Jeśli chodzi o klasy…
Zwiększamy efektywność zespołów projektowych 26
www.bnsit.pl
Hipoteza #1
Zwiększamy efektywność zespołów projektowych 27
www.bnsit.pl
Hipoteza #2
Zwiększamy efektywność zespołów projektowych 28
www.bnsit.pl
Hipoteza #3
Zwiększamy efektywność zespołów projektowych 29
www.bnsit.pl
Nazwa metody mLOC Nazwa klasy
mLOC/
cLOC
checkDataProtectionStatus 956 PersonalDataProtectionCommon 79,47%
createWord 470 WordCreator 69,32%
process 95 SearchInText 60,51%
performOperation 1 187 TransferOperations 17,28%
closeTask 12 TaskEditAction 1,73%
updateCustomerSheet 56 TransferOperations 0,82%
onResponse 222 DeviceImpl_T41 0,50%
scanRoutingTable 26 DeviceImpl_T41 0,06%
countControlSum 10 AuthenticationLibrary 0,40%
checkTransactionStatus 10 AuthenticationLibrary 0,40%
Jeśli chodzi o metody…
Zwiększamy efektywność zespołów projektowych 30
www.bnsit.pl
Hipoteza #4
Zwiększamy efektywność zespołów projektowych 31
www.bnsit.pl
Hipoteza #5
Zwiększamy efektywność zespołów projektowych 32
www.bnsit.pl
Hipoteza #6
Zwiększamy efektywność zespołów projektowych 33
www.bnsit.pl
Extract Method?
Jeśli chodzi o zmienne…
Zwiększamy efektywność zespołów projektowych 34
www.bnsit.pl
Jeśli chodzi o pakiety…
Zwiększamy efektywność zespołów projektowych 35
Axel Fontaine, Architecting for Continuous Delivery
http://2013.33degree.org/talk/show/51
www.bnsit.pl
Biznes ARCH Klasy Metody Zmienne
Smell
Przykład
Refaktor
ing
Co sprawia brak umiejętności n a z y w a n i a?
Zwiększamy efektywność zespołów projektowych 36
www.bnsit.pl
Biznes ARCH Klasy Metody Zmienne
Smell Zmienna
quasi-globalna
Przykład
Refaktor
ing
Co sprawia brak umiejętności n a z y w a n i a?
Zwiększamy efektywność zespołów projektowych 37
www.bnsit.pl
Biznes ARCH Klasy Metody Zmienne
Smell Zmienna
quasi-globalna
Przykład tmp1, tmp2,
tmp3
Refaktor
ing
Co sprawia brak umiejętności n a z y w a n i a?
Zwiększamy efektywność zespołów projektowych 38
www.bnsit.pl
Biznes ARCH Klasy Metody Zmienne
Smell Zmienna
quasi-globalna
Przykład tmp1, tmp2,
tmp3
Refaktor
ing
Split
Temporary
Variable
http://refactoring.com
Co sprawia brak umiejętności n a z y w a n i a?
Zwiększamy efektywność zespołów projektowych 39
www.bnsit.pl
Biznes ARCH Klasy Metody Zmienne
Smell Long Method Zmienna
quasi-globalna
Przykład tmp1, tmp2,
tmp3
Refaktor
ing
Split
Temporary
Variable
http://refactoring.com
Co sprawia brak umiejętności n a z y w a n i a?
Zwiększamy efektywność zespołów projektowych 40
www.bnsit.pl
Biznes ARCH Klasy Metody Zmienne
Smell Long Method Zmienna
quasi-globalna
Przykład process,
performOperation
tmp1, tmp2,
tmp3
Refaktor
ing
Split
Temporary
Variable
http://refactoring.com
Co sprawia brak umiejętności n a z y w a n i a?
Zwiększamy efektywność zespołów projektowych 41
www.bnsit.pl
Biznes ARCH Klasy Metody Zmienne
Smell Long Method Zmienna
quasi-globalna
Przykład process,
performOperation
tmp1, tmp2,
tmp3
Refaktor
ing
Extract Method
http://refactoring.com
Split
Temporary
Variable
http://refactoring.com
Co sprawia brak umiejętności n a z y w a n i a?
Zwiększamy efektywność zespołów projektowych 42
www.bnsit.pl
Biznes ARCH Klasy Metody Zmienne
Smell God Class Long Method Zmienna
quasi-globalna
Przykład process,
performOperation
tmp1, tmp2,
tmp3
Refaktor
ing
Extract Method
http://refactoring.com
Split
Temporary
Variable
http://refactoring.com
Co sprawia brak umiejętności n a z y w a n i a?
Zwiększamy efektywność zespołów projektowych 43
www.bnsit.pl
Biznes ARCH Klasy Metody Zmienne
Smell God Class Long Method Zmienna
quasi-globalna
Przykład Location
Manager,
NetworkItem
process,
performOperation
tmp1, tmp2,
tmp3
Refaktor
ing
Extract Method
http://refactoring.com
Split
Temporary
Variable
http://refactoring.com
Co sprawia brak umiejętności n a z y w a n i a?
Zwiększamy efektywność zespołów projektowych 44
www.bnsit.pl
Biznes ARCH Klasy Metody Zmienne
Smell God Class Long Method Zmienna
quasi-globalna
Przykład Location
Manager,
NetworkItem
process,
performOperation
tmp1, tmp2,
tmp3
Refaktor
ing
Extract Class
http://refactoring.com
Extract Method
http://refactoring.com
Split
Temporary
Variable
http://refactoring.com
Co sprawia brak umiejętności n a z y w a n i a?
Zwiększamy efektywność zespołów projektowych 45
www.bnsit.pl
Biznes ARCH Klasy Metody Zmienne
Smell Big Ball of Mud
http://laputan.org/mud/
God Class Long Method Zmienna
quasi-globalna
Przykład Location
Manager,
NetworkItem
process,
performOperation
tmp1, tmp2,
tmp3
Refaktor
ing
Extract Class
http://refactoring.com
Extract Method
http://refactoring.com
Split
Temporary
Variable
http://refactoring.com
Co sprawia brak umiejętności n a z y w a n i a?
Zwiększamy efektywność zespołów projektowych 46
www.bnsit.pl
Biznes ARCH Klasy Metody Zmienne
Smell Big Ball of Mud
http://laputan.org/mud/
God Class Long Method Zmienna
quasi-globalna
Przykład Genreic Plugin
Framework,
Multi-Device
Platform
Location
Manager,
NetworkItem
process,
performOperation
tmp1, tmp2,
tmp3
Refaktor
ing
Extract Class
http://refactoring.com
Extract Method
http://refactoring.com
Split
Temporary
Variable
http://refactoring.com
Co sprawia brak umiejętności n a z y w a n i a?
Zwiększamy efektywność zespołów projektowych 47
www.bnsit.pl
Biznes ARCH Klasy Metody Zmienne
Smell Big Ball of Mud
http://laputan.org/mud/
God Class Long Method Zmienna
quasi-globalna
Przykład Genreic Plugin
Framework,
Multi-Device
Platform
Location
Manager,
NetworkItem
process,
performOperation
tmp1, tmp2,
tmp3
Refaktor
ing
Wprowadź
wzorzec
architektoniczny
Extract Class
http://refactoring.com
Extract Method
http://refactoring.com
Split
Temporary
Variable
http://refactoring.com
Co sprawia brak umiejętności n a z y w a n i a?
Zwiększamy efektywność zespołów projektowych 48
www.bnsit.pl
Biznes ARCH Klasy Metody Zmienne
Smell Sexy Vision Big Ball of Mud
http://laputan.org/mud/
God Class Long Method Zmienna
quasi-globalna
Przykład Genreic Plugin
Framework,
Multi-Device
Platform
Location
Manager,
NetworkItem
process,
performOperation
tmp1, tmp2,
tmp3
Refaktor
ing
Wprowadź
wzorzec
architektoniczny
Extract Class
http://refactoring.com
Extract Method
http://refactoring.com
Split
Temporary
Variable
http://refactoring.com
Co sprawia brak umiejętności n a z y w a n i a?
Zwiększamy efektywność zespołów projektowych 49
www.bnsit.pl
Biznes ARCH Klasy Metody Zmienne
Smell Sexy Vision Big Ball of Mud
http://laputan.org/mud/
God Class Long Method Zmienna
quasi-globalna
Przykład ZSI, BI, DW Genreic Plugin
Framework,
Multi-Device
Platform
Location
Manager,
NetworkItem
process,
performOperation
tmp1, tmp2,
tmp3
Refaktor
ing
Wprowadź
wzorzec
architektoniczny
Extract Class
http://refactoring.com
Extract Method
http://refactoring.com
Split
Temporary
Variable
http://refactoring.com
Co sprawia brak umiejętności n a z y w a n i a?
Zwiększamy efektywność zespołów projektowych 50
www.bnsit.pl
Biznes ARCH Klasy Metody Zmienne
Smell Sexy Vision Big Ball of Mud
http://laputan.org/mud/
God Class Long Method Zmienna
quasi-globalna
Przykład ZSI, BI, DW Genreic Plugin
Framework,
Multi-Device
Platform
Location
Manager,
NetworkItem
process,
performOperation
tmp1, tmp2,
tmp3
Refaktor
ing
Zdefiniuj,
podziel,
zmień proces
Wprowadź
wzorzec
architektoniczny
Extract Class
http://refactoring.com
Extract Method
http://refactoring.com
Split
Temporary
Variable
http://refactoring.com
Co sprawia brak umiejętności n a z y w a n i a?
Zwiększamy efektywność zespołów projektowych 51
www.bnsit.pl
Biznes ARCH Klasy Metody Zmienne
Smell Sexy Vision Big Ball of Mud
http://laputan.org/mud/
God Class Long Method Zmienna
quasi-globalna
Przykład ZSI, BI, DW Genreic Plugin
Framework,
Multi-Device
Platform
Location
Manager,
NetworkItem
process,
performOperation
tmp1, tmp2,
tmp3
Refaktor
ing
Zdefiniuj,
podziel,
zmień proces
Wprowadź
wzorzec
architektoniczny
Extract Class
http://refactoring.com
Extract Method
http://refactoring.com
Split
Temporary
Variable
http://refactoring.com
Skąd wieje wiatr?
Zwiększamy efektywność zespołów projektowych 52
www.bnsit.pl
process( name, surname,
age, street, city,
postalCode, area);
//...
Biznes ARCH Klasy Metody Zmienne
Skąd wieje wiatr?
Zwiększamy efektywność zespołów projektowych 53
www.bnsit.pl
Diagnoza i leczenie
Zwiększamy efektywność zespołów projektowych 54
www.bnsit.pl
Abstrakcja, implementacja
Zwiększamy efektywność zespołów projektowych 55
www.bnsit.pl
Abstrakcja, implementacja
Zwiększamy efektywność zespołów projektowych 56
www.bnsit.pl
Abstrakcja, implementacja: Kiedy? co?
Zwiększamy efektywność zespołów projektowych 57
www.bnsit.pl
Abstrakcja, implementacja: Kiedy? co?
Zwiększamy efektywność zespołów projektowych 58
www.bnsit.pl
Abstrakcja, implementacja: Kiedy? co?
Zwiększamy efektywność zespołów projektowych 59
www.bnsit.pl
Abstrakcja, implementacja w procesie – NOR
Zwiększamy efektywność zespołów projektowych 60
www.bnsit.pl
Skąd się biorą dobre nazwy
Zwiększamy efektywność zespołów projektowych 61
Biznes ARCH Klasy Metody Zmienne
List<Employee> employees...
//...
EmployeeFile employeeFile = findEmployeeFile( personalID );
employeeFile.getEmergencyContactInformation();
www.bnsit.pl Zwiększamy efektywność zespołów projektowych 62
Kadry
# Kartoteka pracowników
# Akta osobowe pracownika
# Umowa o pracę
# Kwestionariusz osobowy
# Świadectwo pracy
# …
Human Resources
# Employee Personell File
# Medical File
# Payroll File
# I-9 Forms File
# …
Brakło pojęć w domenie!
www.bnsit.pl
Pomieszanie z poplątaniem
Zwiększamy efektywność zespołów projektowych 63
http://pl.wikipedia.org/wiki/Flagi_państw_świata
Pracownik employee =
findPracownik( employeeId );
int wiek = employee.getAge();
//Vafanapoli! Non capisco!
Lavoratore lavoratore =
trovareLavoratore( id );
int età = lavoratore.età();
//Bravo! Bravissimo!
www.bnsit.pl
# Tylko język, w którym myśli klient, pozwala
swobodne eksplorować domenę klienta i
nadawać nazwy pojęciom
# Java pozwala, ale co z get* set*
# Język programowania nie powinien narzucać
konwencji kodowania bazującej na
jakimkolwiek języku naturalnym
Programowanie w języku klienta?
Zwiększamy efektywność zespołów projektowych 64
www.bnsit.pl
Podsumowując
Zwiększamy efektywność zespołów projektowych 65
www.bnsit.pl
S.O.L.I.D
Podstawowe zasady
Zwiększamy efektywność zespołów projektowych 66
Dziękuję za Twój czas!
Zwiększamy efektywność zespołów
projektowych
67

More Related Content

Similar to [4 developers] Jak zniszczyć swój kod - podstawy lingwistyki dla programistów

JDD2015: DDD w praktyce, czyli jak wdrażamy i uczymy się DDD w Allegro - Krzy...
JDD2015: DDD w praktyce, czyli jak wdrażamy i uczymy się DDD w Allegro - Krzy...JDD2015: DDD w praktyce, czyli jak wdrażamy i uczymy się DDD w Allegro - Krzy...
JDD2015: DDD w praktyce, czyli jak wdrażamy i uczymy się DDD w Allegro - Krzy...PROIDEA
 
C++. 50 efektywnych sposobów na udoskonalenie Twoich programów
C++. 50 efektywnych sposobów na udoskonalenie Twoich programówC++. 50 efektywnych sposobów na udoskonalenie Twoich programów
C++. 50 efektywnych sposobów na udoskonalenie Twoich programówWydawnictwo Helion
 
Wiosenne Wieczory ze Scrum 4 Wdrożenie i skalowanie
Wiosenne Wieczory ze Scrum 4 Wdrożenie i skalowanieWiosenne Wieczory ze Scrum 4 Wdrożenie i skalowanie
Wiosenne Wieczory ze Scrum 4 Wdrożenie i skalowanieMichał Parkoła
 
Refactoring - Jak pozostać przy zdrowych zmysłach, redukując dług
Refactoring - Jak pozostać przy zdrowych zmysłach, redukując długRefactoring - Jak pozostać przy zdrowych zmysłach, redukując dług
Refactoring - Jak pozostać przy zdrowych zmysłach, redukując długMax Małecki
 
Jak skrócić czas wykonywania testów integracyjnych?
Jak skrócić czas wykonywania testów integracyjnych?Jak skrócić czas wykonywania testów integracyjnych?
Jak skrócić czas wykonywania testów integracyjnych?Łukasz Zakrzewski
 
Praktyczne code reviews - PHPConPl
Praktyczne code reviews - PHPConPlPraktyczne code reviews - PHPConPl
Praktyczne code reviews - PHPConPlSebastian Marek
 
Zasady technicznej organizacji projektów programistycznych
Zasady technicznej organizacji projektów programistycznychZasady technicznej organizacji projektów programistycznych
Zasady technicznej organizacji projektów programistycznychsztywny
 
C++. Potęga języka. Od przykładu do przykładu
C++. Potęga języka. Od przykładu do przykładuC++. Potęga języka. Od przykładu do przykładu
C++. Potęga języka. Od przykładu do przykładuWydawnictwo Helion
 
Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]Droptica
 
Efektywne Testy Oprogramowania w Środowisku Scrumowym
Efektywne Testy Oprogramowania w Środowisku ScrumowymEfektywne Testy Oprogramowania w Środowisku Scrumowym
Efektywne Testy Oprogramowania w Środowisku ScrumowymTestPro
 
20170928 why r_r jako główna platforma do zaawansowanej analityki w enterprise
20170928 why r_r jako główna platforma do zaawansowanej analityki w enterprise20170928 why r_r jako główna platforma do zaawansowanej analityki w enterprise
20170928 why r_r jako główna platforma do zaawansowanej analityki w enterpriseWit Jakuczun
 
C++. Strategie i taktyki. Vademecum profesjonalisty
C++. Strategie i taktyki. Vademecum profesjonalistyC++. Strategie i taktyki. Vademecum profesjonalisty
C++. Strategie i taktyki. Vademecum profesjonalistyWydawnictwo Helion
 
TGT#17 - Efektywne testy oprogramowania w środowisku Scrumowym - Marcin Kubecki
TGT#17 - Efektywne testy oprogramowania w środowisku Scrumowym - Marcin KubeckiTGT#17 - Efektywne testy oprogramowania w środowisku Scrumowym - Marcin Kubecki
TGT#17 - Efektywne testy oprogramowania w środowisku Scrumowym - Marcin KubeckiTrójmiejska Grupa Testerska
 
Sporządzanie oraz umiejętne wykorzystanie przepisów i schematów. Ansible w pr...
Sporządzanie oraz umiejętne wykorzystanie przepisów i schematów. Ansible w pr...Sporządzanie oraz umiejętne wykorzystanie przepisów i schematów. Ansible w pr...
Sporządzanie oraz umiejętne wykorzystanie przepisów i schematów. Ansible w pr...The Software House
 

Similar to [4 developers] Jak zniszczyć swój kod - podstawy lingwistyki dla programistów (19)

JDD2015: DDD w praktyce, czyli jak wdrażamy i uczymy się DDD w Allegro - Krzy...
JDD2015: DDD w praktyce, czyli jak wdrażamy i uczymy się DDD w Allegro - Krzy...JDD2015: DDD w praktyce, czyli jak wdrażamy i uczymy się DDD w Allegro - Krzy...
JDD2015: DDD w praktyce, czyli jak wdrażamy i uczymy się DDD w Allegro - Krzy...
 
C++. 50 efektywnych sposobów na udoskonalenie Twoich programów
C++. 50 efektywnych sposobów na udoskonalenie Twoich programówC++. 50 efektywnych sposobów na udoskonalenie Twoich programów
C++. 50 efektywnych sposobów na udoskonalenie Twoich programów
 
Scrum Carrots
Scrum CarrotsScrum Carrots
Scrum Carrots
 
Wiosenne Wieczory ze Scrum 4 Wdrożenie i skalowanie
Wiosenne Wieczory ze Scrum 4 Wdrożenie i skalowanieWiosenne Wieczory ze Scrum 4 Wdrożenie i skalowanie
Wiosenne Wieczory ze Scrum 4 Wdrożenie i skalowanie
 
Python i Microsoft
Python i MicrosoftPython i Microsoft
Python i Microsoft
 
Refactoring - Jak pozostać przy zdrowych zmysłach, redukując dług
Refactoring - Jak pozostać przy zdrowych zmysłach, redukując długRefactoring - Jak pozostać przy zdrowych zmysłach, redukując dług
Refactoring - Jak pozostać przy zdrowych zmysłach, redukując dług
 
Jak skrócić czas wykonywania testów integracyjnych?
Jak skrócić czas wykonywania testów integracyjnych?Jak skrócić czas wykonywania testów integracyjnych?
Jak skrócić czas wykonywania testów integracyjnych?
 
Scrum
ScrumScrum
Scrum
 
Praktyczne code reviews - PHPConPl
Praktyczne code reviews - PHPConPlPraktyczne code reviews - PHPConPl
Praktyczne code reviews - PHPConPl
 
Zasady technicznej organizacji projektów programistycznych
Zasady technicznej organizacji projektów programistycznychZasady technicznej organizacji projektów programistycznych
Zasady technicznej organizacji projektów programistycznych
 
C++. Potęga języka. Od przykładu do przykładu
C++. Potęga języka. Od przykładu do przykładuC++. Potęga języka. Od przykładu do przykładu
C++. Potęga języka. Od przykładu do przykładu
 
Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]Drupal jako modularny i rozszerzalny CMS [PL]
Drupal jako modularny i rozszerzalny CMS [PL]
 
Efektywne Testy Oprogramowania w Środowisku Scrumowym
Efektywne Testy Oprogramowania w Środowisku ScrumowymEfektywne Testy Oprogramowania w Środowisku Scrumowym
Efektywne Testy Oprogramowania w Środowisku Scrumowym
 
Praktyki techniczne
Praktyki technicznePraktyki techniczne
Praktyki techniczne
 
20170928 why r_r jako główna platforma do zaawansowanej analityki w enterprise
20170928 why r_r jako główna platforma do zaawansowanej analityki w enterprise20170928 why r_r jako główna platforma do zaawansowanej analityki w enterprise
20170928 why r_r jako główna platforma do zaawansowanej analityki w enterprise
 
C++. Strategie i taktyki. Vademecum profesjonalisty
C++. Strategie i taktyki. Vademecum profesjonalistyC++. Strategie i taktyki. Vademecum profesjonalisty
C++. Strategie i taktyki. Vademecum profesjonalisty
 
TGT#17 - Efektywne testy oprogramowania w środowisku Scrumowym - Marcin Kubecki
TGT#17 - Efektywne testy oprogramowania w środowisku Scrumowym - Marcin KubeckiTGT#17 - Efektywne testy oprogramowania w środowisku Scrumowym - Marcin Kubecki
TGT#17 - Efektywne testy oprogramowania w środowisku Scrumowym - Marcin Kubecki
 
ANSIBLE W PRAKTYCE
ANSIBLE W PRAKTYCEANSIBLE W PRAKTYCE
ANSIBLE W PRAKTYCE
 
Sporządzanie oraz umiejętne wykorzystanie przepisów i schematów. Ansible w pr...
Sporządzanie oraz umiejętne wykorzystanie przepisów i schematów. Ansible w pr...Sporządzanie oraz umiejętne wykorzystanie przepisów i schematów. Ansible w pr...
Sporządzanie oraz umiejętne wykorzystanie przepisów i schematów. Ansible w pr...
 

More from Michał Bartyzel

Developer prowadzi szkolenia
Developer prowadzi szkoleniaDeveloper prowadzi szkolenia
Developer prowadzi szkoleniaMichał Bartyzel
 
Jak sprzedać refaktoryzację? Nordea Bank AB Case
Jak sprzedać refaktoryzację? Nordea Bank AB CaseJak sprzedać refaktoryzację? Nordea Bank AB Case
Jak sprzedać refaktoryzację? Nordea Bank AB CaseMichał Bartyzel
 
[PL, 2017] Conversation Patterns for Software Professionals
[PL, 2017] Conversation Patterns for Software Professionals[PL, 2017] Conversation Patterns for Software Professionals
[PL, 2017] Conversation Patterns for Software ProfessionalsMichał Bartyzel
 
[Geek Girls Carrots] Agile being
[Geek Girls Carrots] Agile being[Geek Girls Carrots] Agile being
[Geek Girls Carrots] Agile beingMichał Bartyzel
 
Co jest czym w obszarze miękkim?
Co jest czym w obszarze miękkim?Co jest czym w obszarze miękkim?
Co jest czym w obszarze miękkim?Michał Bartyzel
 
[chamberconf] Z czym mierzą się zespoły?
[chamberconf] Z czym mierzą się zespoły?[chamberconf] Z czym mierzą się zespoły?
[chamberconf] Z czym mierzą się zespoły?Michał Bartyzel
 
[JUG, PL] Strategiczna refaktoryzacja
[JUG, PL] Strategiczna refaktoryzacja[JUG, PL] Strategiczna refaktoryzacja
[JUG, PL] Strategiczna refaktoryzacjaMichał Bartyzel
 
[Agile2014] Conversation Patterns for Software Professionals
[Agile2014] Conversation Patterns for Software Professionals[Agile2014] Conversation Patterns for Software Professionals
[Agile2014] Conversation Patterns for Software ProfessionalsMichał Bartyzel
 
Szybko czy dobrze. jak współpracować z biznesem i nie dać się zwieść pozornym...
Szybko czy dobrze. jak współpracować z biznesem i nie dać się zwieść pozornym...Szybko czy dobrze. jak współpracować z biznesem i nie dać się zwieść pozornym...
Szybko czy dobrze. jak współpracować z biznesem i nie dać się zwieść pozornym...Michał Bartyzel
 
Conversation patters for ubiquitous language
Conversation patters for ubiquitous languageConversation patters for ubiquitous language
Conversation patters for ubiquitous languageMichał Bartyzel
 
xUnit - narzędzie do testowania
xUnit - narzędzie do testowaniaxUnit - narzędzie do testowania
xUnit - narzędzie do testowaniaMichał Bartyzel
 

More from Michał Bartyzel (15)

Developer prowadzi szkolenia
Developer prowadzi szkoleniaDeveloper prowadzi szkolenia
Developer prowadzi szkolenia
 
Getting Things Programmed
Getting Things ProgrammedGetting Things Programmed
Getting Things Programmed
 
Jak sprzedać refaktoryzację? Nordea Bank AB Case
Jak sprzedać refaktoryzację? Nordea Bank AB CaseJak sprzedać refaktoryzację? Nordea Bank AB Case
Jak sprzedać refaktoryzację? Nordea Bank AB Case
 
[PL, 2017] Conversation Patterns for Software Professionals
[PL, 2017] Conversation Patterns for Software Professionals[PL, 2017] Conversation Patterns for Software Professionals
[PL, 2017] Conversation Patterns for Software Professionals
 
Kanban na lodówce
Kanban na lodówceKanban na lodówce
Kanban na lodówce
 
[Geek Girls Carrots] Agile being
[Geek Girls Carrots] Agile being[Geek Girls Carrots] Agile being
[Geek Girls Carrots] Agile being
 
Co jest czym w obszarze miękkim?
Co jest czym w obszarze miękkim?Co jest czym w obszarze miękkim?
Co jest czym w obszarze miękkim?
 
[chamberconf] Z czym mierzą się zespoły?
[chamberconf] Z czym mierzą się zespoły?[chamberconf] Z czym mierzą się zespoły?
[chamberconf] Z czym mierzą się zespoły?
 
[JUG, PL] Strategiczna refaktoryzacja
[JUG, PL] Strategiczna refaktoryzacja[JUG, PL] Strategiczna refaktoryzacja
[JUG, PL] Strategiczna refaktoryzacja
 
[Agile2014] Conversation Patterns for Software Professionals
[Agile2014] Conversation Patterns for Software Professionals[Agile2014] Conversation Patterns for Software Professionals
[Agile2014] Conversation Patterns for Software Professionals
 
Szybko czy dobrze. jak współpracować z biznesem i nie dać się zwieść pozornym...
Szybko czy dobrze. jak współpracować z biznesem i nie dać się zwieść pozornym...Szybko czy dobrze. jak współpracować z biznesem i nie dać się zwieść pozornym...
Szybko czy dobrze. jak współpracować z biznesem i nie dać się zwieść pozornym...
 
Conversation patters for ubiquitous language
Conversation patters for ubiquitous languageConversation patters for ubiquitous language
Conversation patters for ubiquitous language
 
Diagram sekwencji
Diagram sekwencjiDiagram sekwencji
Diagram sekwencji
 
xUnit - narzędzie do testowania
xUnit - narzędzie do testowaniaxUnit - narzędzie do testowania
xUnit - narzędzie do testowania
 
Wzorce kreacyjne GoF
Wzorce kreacyjne GoFWzorce kreacyjne GoF
Wzorce kreacyjne GoF
 

[4 developers] Jak zniszczyć swój kod - podstawy lingwistyki dla programistów

  • 1. Jak zniszczyć swój kod? Podstawy lingwistyki dla programistów Zwiększamy efektywność zespołów projektowych 1
  • 3. www.bnsit.pl Nazwa, którą ja się posługiwałem Nazwa, którą zobaczyłem Moja kinoteka Dodaj serial Dodaj odcinek Opłacony/nieopłacony Etykiety Czas trwania: h 35 min. Dr Home. Sezon 1 odcinek 29 Nonszalancja nazewnicza Zwiększamy efektywność zespołów projektowych 3
  • 4. www.bnsit.pl Nazwa, którą ja się posługiwałem Nazwa, którą zobaczyłem Moja kinoteka Lista filmów Dodaj serial Dodaj odcinek Opłacony/nieopłacony Etykiety Czas trwania: h 35 min. Dr Home. Sezon 1 odcinek 29 Nonszalancja nazewnicza Zwiększamy efektywność zespołów projektowych 4
  • 5. www.bnsit.pl Nazwa, którą ja się posługiwałem Nazwa, którą zobaczyłem Moja kinoteka Lista filmów Dodaj serial Dodaj kategorię Dodaj odcinek Opłacony/nieopłacony Etykiety Czas trwania: h 35 min. Dr Home. Sezon 1 odcinek 29 Nonszalancja nazewnicza Zwiększamy efektywność zespołów projektowych 5
  • 6. www.bnsit.pl Nazwa, którą ja się posługiwałem Nazwa, którą zobaczyłem Moja kinoteka Lista filmów Dodaj serial Dodaj kategorię Dodaj odcinek Dodaj plik flv Opłacony/nieopłacony Etykiety Czas trwania: h 35 min. Dr Home. Sezon 1 odcinek 29 Nonszalancja nazewnicza Zwiększamy efektywność zespołów projektowych 6
  • 7. www.bnsit.pl Nazwa, którą ja się posługiwałem Nazwa, którą zobaczyłem Moja kinoteka Lista filmów Dodaj serial Dodaj kategorię Dodaj odcinek Dodaj plik flv Opłacony/nieopłacony Status [checkbox] Etykiety Czas trwania: h 35 min. Dr Home. Sezon 1 odcinek 29 Nonszalancja nazewnicza Zwiększamy efektywność zespołów projektowych 7
  • 8. www.bnsit.pl Nazwa, którą ja się posługiwałem Nazwa, którą zobaczyłem Moja kinoteka Lista filmów Dodaj serial Dodaj kategorię Dodaj odcinek Dodaj plik flv Opłacony/nieopłacony Status [checkbox] Etykiety Chmura tagów Czas trwania: h 35 min. Dr Home. Sezon 1 odcinek 29 Nonszalancja nazewnicza Zwiększamy efektywność zespołów projektowych 8
  • 9. www.bnsit.pl Nazwa, którą ja się posługiwałem Nazwa, którą zobaczyłem Moja kinoteka Lista filmów Dodaj serial Dodaj kategorię Dodaj odcinek Dodaj plik flv Opłacony/nieopłacony Status [checkbox] Etykiety Chmura tagów Czas trwania: h 35 min. Długość: 2 100 000 ms Dr Home. Sezon 1 odcinek 29 Nonszalancja nazewnicza Zwiększamy efektywność zespołów projektowych 9
  • 10. www.bnsit.pl Nazwa, którą ja się posługiwałem Nazwa, którą zobaczyłem Moja kinoteka Lista filmów Dodaj serial Dodaj kategorię Dodaj odcinek Dodaj plik flv Opłacony/nieopłacony Status [checkbox] Etykiety Chmura tagów Czas trwania: h 35 min. Długość: 2 100 000 ms Dr Home. Sezon 1 odcinek 29 87a1b230ff910912.flv Nonszalancja nazewnicza Zwiększamy efektywność zespołów projektowych 10
  • 11. www.bnsit.pl Rzeczywistość, słowa, znaczenia, reguły Zwiększamy efektywność zespołów projektowych 11
  • 12. www.bnsit.pl Rzeczywistość, słowa, znaczenia, reguły Zwiększamy efektywność zespołów projektowych 12
  • 13. www.bnsit.pl Co można zrobić z… Zwiększamy efektywność zespołów projektowych 13 Listą pracowników Ewidencją pracowników • Dodać pracownika • Usunąć pracownika • Usunąć wszystkich pracowników • Wciągnąć pracownika do ewidencji • Wyciągnąć kartotekę pracownika • Oznaczyć urlop • Oznaczyć zwolnienie chorobowe • Wyciągnąć świadectwo pracy
  • 14. www.bnsit.pl Programujesz to, co nazywasz Zwiększamy efektywność zespołów projektowych 14 List<Employee> employees... //... EmployeeFile employeeFile = findEmployeeFile( personalID ); employeeFile.getEmergencyContactInformation();
  • 15. www.bnsit.pl A potem powstaje architektura Zwiększamy efektywność zespołów projektowych 15 List<Employee> employees... //... EmployeeFile employeeFile = findEmployeeFile( personalID ); employeeFile.getEmergencyContactInformation();
  • 16. www.bnsit.pl I dzieją się z nią dziwne rzeczy Zwiększamy efektywność zespołów projektowych 16
  • 17. www.bnsit.pl Ile %% wymagań naprawdę się zmienia? Zwiększamy efektywność zespołów projektowych 17
  • 18. www.bnsit.pl Jakie znaczenie może mieć słowo? Zwiększamy efektywność zespołów projektowych 18
  • 20. www.bnsit.pl Przykład: Geometria euklidesowa ;) Zwiększamy efektywność zespołów projektowych 20
  • 21. www.bnsit.pl Przykład: Geometria euklidesowa ;) Zwiększamy efektywność zespołów projektowych 21
  • 22. www.bnsit.pl ... ale jeśli nie znasz podstawowych zasad Zwiększamy efektywność zespołów projektowych 22
  • 24. www.bnsit.pl # To jest proste? • Koncepcyjnie proste, logicznie proste, eleganckie • Lecz wcale nie tak łatwe do zastosowania # To jest dla początkujących? • Podstawy nie oznaczają rzeczy najłatwiejszych lecz p o d s t a w ę • Trzeba sporo doświadczenia, aby zajmować się sprawami oczywistymi To zbyt banalne? Zwiększamy efektywność zespołów projektowych 24
  • 25. www.bnsit.pl Co chcemy zacząć zauważać? Zwiększamy efektywność zespołów projektowych 25
  • 26. www.bnsit.pl Nazwa klasy cLOC LocationManager 26 752 NetworkItem 10 955 TransferOperations 6 871 CalculatorsManager 4 325 MonitorManager 1 514 VTViewInvoker 48 ContactService 47 Address 34 DataRange 21 LoggedUserDetailsModel 13 Jeśli chodzi o klasy… Zwiększamy efektywność zespołów projektowych 26
  • 30. www.bnsit.pl Nazwa metody mLOC Nazwa klasy mLOC/ cLOC checkDataProtectionStatus 956 PersonalDataProtectionCommon 79,47% createWord 470 WordCreator 69,32% process 95 SearchInText 60,51% performOperation 1 187 TransferOperations 17,28% closeTask 12 TaskEditAction 1,73% updateCustomerSheet 56 TransferOperations 0,82% onResponse 222 DeviceImpl_T41 0,50% scanRoutingTable 26 DeviceImpl_T41 0,06% countControlSum 10 AuthenticationLibrary 0,40% checkTransactionStatus 10 AuthenticationLibrary 0,40% Jeśli chodzi o metody… Zwiększamy efektywność zespołów projektowych 30
  • 34. www.bnsit.pl Extract Method? Jeśli chodzi o zmienne… Zwiększamy efektywność zespołów projektowych 34
  • 35. www.bnsit.pl Jeśli chodzi o pakiety… Zwiększamy efektywność zespołów projektowych 35 Axel Fontaine, Architecting for Continuous Delivery http://2013.33degree.org/talk/show/51
  • 36. www.bnsit.pl Biznes ARCH Klasy Metody Zmienne Smell Przykład Refaktor ing Co sprawia brak umiejętności n a z y w a n i a? Zwiększamy efektywność zespołów projektowych 36
  • 37. www.bnsit.pl Biznes ARCH Klasy Metody Zmienne Smell Zmienna quasi-globalna Przykład Refaktor ing Co sprawia brak umiejętności n a z y w a n i a? Zwiększamy efektywność zespołów projektowych 37
  • 38. www.bnsit.pl Biznes ARCH Klasy Metody Zmienne Smell Zmienna quasi-globalna Przykład tmp1, tmp2, tmp3 Refaktor ing Co sprawia brak umiejętności n a z y w a n i a? Zwiększamy efektywność zespołów projektowych 38
  • 39. www.bnsit.pl Biznes ARCH Klasy Metody Zmienne Smell Zmienna quasi-globalna Przykład tmp1, tmp2, tmp3 Refaktor ing Split Temporary Variable http://refactoring.com Co sprawia brak umiejętności n a z y w a n i a? Zwiększamy efektywność zespołów projektowych 39
  • 40. www.bnsit.pl Biznes ARCH Klasy Metody Zmienne Smell Long Method Zmienna quasi-globalna Przykład tmp1, tmp2, tmp3 Refaktor ing Split Temporary Variable http://refactoring.com Co sprawia brak umiejętności n a z y w a n i a? Zwiększamy efektywność zespołów projektowych 40
  • 41. www.bnsit.pl Biznes ARCH Klasy Metody Zmienne Smell Long Method Zmienna quasi-globalna Przykład process, performOperation tmp1, tmp2, tmp3 Refaktor ing Split Temporary Variable http://refactoring.com Co sprawia brak umiejętności n a z y w a n i a? Zwiększamy efektywność zespołów projektowych 41
  • 42. www.bnsit.pl Biznes ARCH Klasy Metody Zmienne Smell Long Method Zmienna quasi-globalna Przykład process, performOperation tmp1, tmp2, tmp3 Refaktor ing Extract Method http://refactoring.com Split Temporary Variable http://refactoring.com Co sprawia brak umiejętności n a z y w a n i a? Zwiększamy efektywność zespołów projektowych 42
  • 43. www.bnsit.pl Biznes ARCH Klasy Metody Zmienne Smell God Class Long Method Zmienna quasi-globalna Przykład process, performOperation tmp1, tmp2, tmp3 Refaktor ing Extract Method http://refactoring.com Split Temporary Variable http://refactoring.com Co sprawia brak umiejętności n a z y w a n i a? Zwiększamy efektywność zespołów projektowych 43
  • 44. www.bnsit.pl Biznes ARCH Klasy Metody Zmienne Smell God Class Long Method Zmienna quasi-globalna Przykład Location Manager, NetworkItem process, performOperation tmp1, tmp2, tmp3 Refaktor ing Extract Method http://refactoring.com Split Temporary Variable http://refactoring.com Co sprawia brak umiejętności n a z y w a n i a? Zwiększamy efektywność zespołów projektowych 44
  • 45. www.bnsit.pl Biznes ARCH Klasy Metody Zmienne Smell God Class Long Method Zmienna quasi-globalna Przykład Location Manager, NetworkItem process, performOperation tmp1, tmp2, tmp3 Refaktor ing Extract Class http://refactoring.com Extract Method http://refactoring.com Split Temporary Variable http://refactoring.com Co sprawia brak umiejętności n a z y w a n i a? Zwiększamy efektywność zespołów projektowych 45
  • 46. www.bnsit.pl Biznes ARCH Klasy Metody Zmienne Smell Big Ball of Mud http://laputan.org/mud/ God Class Long Method Zmienna quasi-globalna Przykład Location Manager, NetworkItem process, performOperation tmp1, tmp2, tmp3 Refaktor ing Extract Class http://refactoring.com Extract Method http://refactoring.com Split Temporary Variable http://refactoring.com Co sprawia brak umiejętności n a z y w a n i a? Zwiększamy efektywność zespołów projektowych 46
  • 47. www.bnsit.pl Biznes ARCH Klasy Metody Zmienne Smell Big Ball of Mud http://laputan.org/mud/ God Class Long Method Zmienna quasi-globalna Przykład Genreic Plugin Framework, Multi-Device Platform Location Manager, NetworkItem process, performOperation tmp1, tmp2, tmp3 Refaktor ing Extract Class http://refactoring.com Extract Method http://refactoring.com Split Temporary Variable http://refactoring.com Co sprawia brak umiejętności n a z y w a n i a? Zwiększamy efektywność zespołów projektowych 47
  • 48. www.bnsit.pl Biznes ARCH Klasy Metody Zmienne Smell Big Ball of Mud http://laputan.org/mud/ God Class Long Method Zmienna quasi-globalna Przykład Genreic Plugin Framework, Multi-Device Platform Location Manager, NetworkItem process, performOperation tmp1, tmp2, tmp3 Refaktor ing Wprowadź wzorzec architektoniczny Extract Class http://refactoring.com Extract Method http://refactoring.com Split Temporary Variable http://refactoring.com Co sprawia brak umiejętności n a z y w a n i a? Zwiększamy efektywność zespołów projektowych 48
  • 49. www.bnsit.pl Biznes ARCH Klasy Metody Zmienne Smell Sexy Vision Big Ball of Mud http://laputan.org/mud/ God Class Long Method Zmienna quasi-globalna Przykład Genreic Plugin Framework, Multi-Device Platform Location Manager, NetworkItem process, performOperation tmp1, tmp2, tmp3 Refaktor ing Wprowadź wzorzec architektoniczny Extract Class http://refactoring.com Extract Method http://refactoring.com Split Temporary Variable http://refactoring.com Co sprawia brak umiejętności n a z y w a n i a? Zwiększamy efektywność zespołów projektowych 49
  • 50. www.bnsit.pl Biznes ARCH Klasy Metody Zmienne Smell Sexy Vision Big Ball of Mud http://laputan.org/mud/ God Class Long Method Zmienna quasi-globalna Przykład ZSI, BI, DW Genreic Plugin Framework, Multi-Device Platform Location Manager, NetworkItem process, performOperation tmp1, tmp2, tmp3 Refaktor ing Wprowadź wzorzec architektoniczny Extract Class http://refactoring.com Extract Method http://refactoring.com Split Temporary Variable http://refactoring.com Co sprawia brak umiejętności n a z y w a n i a? Zwiększamy efektywność zespołów projektowych 50
  • 51. www.bnsit.pl Biznes ARCH Klasy Metody Zmienne Smell Sexy Vision Big Ball of Mud http://laputan.org/mud/ God Class Long Method Zmienna quasi-globalna Przykład ZSI, BI, DW Genreic Plugin Framework, Multi-Device Platform Location Manager, NetworkItem process, performOperation tmp1, tmp2, tmp3 Refaktor ing Zdefiniuj, podziel, zmień proces Wprowadź wzorzec architektoniczny Extract Class http://refactoring.com Extract Method http://refactoring.com Split Temporary Variable http://refactoring.com Co sprawia brak umiejętności n a z y w a n i a? Zwiększamy efektywność zespołów projektowych 51
  • 52. www.bnsit.pl Biznes ARCH Klasy Metody Zmienne Smell Sexy Vision Big Ball of Mud http://laputan.org/mud/ God Class Long Method Zmienna quasi-globalna Przykład ZSI, BI, DW Genreic Plugin Framework, Multi-Device Platform Location Manager, NetworkItem process, performOperation tmp1, tmp2, tmp3 Refaktor ing Zdefiniuj, podziel, zmień proces Wprowadź wzorzec architektoniczny Extract Class http://refactoring.com Extract Method http://refactoring.com Split Temporary Variable http://refactoring.com Skąd wieje wiatr? Zwiększamy efektywność zespołów projektowych 52
  • 53. www.bnsit.pl process( name, surname, age, street, city, postalCode, area); //... Biznes ARCH Klasy Metody Zmienne Skąd wieje wiatr? Zwiększamy efektywność zespołów projektowych 53
  • 54. www.bnsit.pl Diagnoza i leczenie Zwiększamy efektywność zespołów projektowych 54
  • 57. www.bnsit.pl Abstrakcja, implementacja: Kiedy? co? Zwiększamy efektywność zespołów projektowych 57
  • 58. www.bnsit.pl Abstrakcja, implementacja: Kiedy? co? Zwiększamy efektywność zespołów projektowych 58
  • 59. www.bnsit.pl Abstrakcja, implementacja: Kiedy? co? Zwiększamy efektywność zespołów projektowych 59
  • 60. www.bnsit.pl Abstrakcja, implementacja w procesie – NOR Zwiększamy efektywność zespołów projektowych 60
  • 61. www.bnsit.pl Skąd się biorą dobre nazwy Zwiększamy efektywność zespołów projektowych 61 Biznes ARCH Klasy Metody Zmienne List<Employee> employees... //... EmployeeFile employeeFile = findEmployeeFile( personalID ); employeeFile.getEmergencyContactInformation();
  • 62. www.bnsit.pl Zwiększamy efektywność zespołów projektowych 62 Kadry # Kartoteka pracowników # Akta osobowe pracownika # Umowa o pracę # Kwestionariusz osobowy # Świadectwo pracy # … Human Resources # Employee Personell File # Medical File # Payroll File # I-9 Forms File # … Brakło pojęć w domenie!
  • 63. www.bnsit.pl Pomieszanie z poplątaniem Zwiększamy efektywność zespołów projektowych 63 http://pl.wikipedia.org/wiki/Flagi_państw_świata Pracownik employee = findPracownik( employeeId ); int wiek = employee.getAge(); //Vafanapoli! Non capisco! Lavoratore lavoratore = trovareLavoratore( id ); int età = lavoratore.età(); //Bravo! Bravissimo!
  • 64. www.bnsit.pl # Tylko język, w którym myśli klient, pozwala swobodne eksplorować domenę klienta i nadawać nazwy pojęciom # Java pozwala, ale co z get* set* # Język programowania nie powinien narzucać konwencji kodowania bazującej na jakimkolwiek języku naturalnym Programowanie w języku klienta? Zwiększamy efektywność zespołów projektowych 64
  • 67. Dziękuję za Twój czas! Zwiększamy efektywność zespołów projektowych 67