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
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();
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
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
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