Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,944 views

Published on

Published in: Entertainment & Humor
  • Be the first to comment

  • Be the first to like this

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

  1. 1. Jak zniszczyć swój kod?Podstawy lingwistyki dla programistówZwiększamy efektywność zespołówprojektowych1
  2. 2. www.bnsit.plMichał Bartyzelmbartyzel.blogspot.com@MichalBartyzelZwiększamy efektywność zespołów projektowych 2
  3. 3. www.bnsit.plNazwa, którą ja się posługiwałem Nazwa, którą zobaczyłemMoja kinotekaDodaj serialDodaj odcinekOpłacony/nieopłaconyEtykietyCzas trwania: h 35 min.Dr Home. Sezon 1 odcinek 29Nonszalancja nazewniczaZwiększamy efektywność zespołów projektowych 3
  4. 4. www.bnsit.plNazwa, którą ja się posługiwałem Nazwa, którą zobaczyłemMoja kinoteka Lista filmówDodaj serialDodaj odcinekOpłacony/nieopłaconyEtykietyCzas trwania: h 35 min.Dr Home. Sezon 1 odcinek 29Nonszalancja nazewniczaZwiększamy efektywność zespołów projektowych 4
  5. 5. www.bnsit.plNazwa, którą ja się posługiwałem Nazwa, którą zobaczyłemMoja kinoteka Lista filmówDodaj serial Dodaj kategorięDodaj odcinekOpłacony/nieopłaconyEtykietyCzas trwania: h 35 min.Dr Home. Sezon 1 odcinek 29Nonszalancja nazewniczaZwiększamy efektywność zespołów projektowych 5
  6. 6. www.bnsit.plNazwa, którą ja się posługiwałem Nazwa, którą zobaczyłemMoja kinoteka Lista filmówDodaj serial Dodaj kategorięDodaj odcinek Dodaj plik flvOpłacony/nieopłaconyEtykietyCzas trwania: h 35 min.Dr Home. Sezon 1 odcinek 29Nonszalancja nazewniczaZwiększamy efektywność zespołów projektowych 6
  7. 7. www.bnsit.plNazwa, którą ja się posługiwałem Nazwa, którą zobaczyłemMoja kinoteka Lista filmówDodaj serial Dodaj kategorięDodaj odcinek Dodaj plik flvOpłacony/nieopłacony Status [checkbox]EtykietyCzas trwania: h 35 min.Dr Home. Sezon 1 odcinek 29Nonszalancja nazewniczaZwiększamy efektywność zespołów projektowych 7
  8. 8. www.bnsit.plNazwa, którą ja się posługiwałem Nazwa, którą zobaczyłemMoja kinoteka Lista filmówDodaj serial Dodaj kategorięDodaj odcinek Dodaj plik flvOpłacony/nieopłacony Status [checkbox]Etykiety Chmura tagówCzas trwania: h 35 min.Dr Home. Sezon 1 odcinek 29Nonszalancja nazewniczaZwiększamy efektywność zespołów projektowych 8
  9. 9. www.bnsit.plNazwa, którą ja się posługiwałem Nazwa, którą zobaczyłemMoja kinoteka Lista filmówDodaj serial Dodaj kategorięDodaj odcinek Dodaj plik flvOpłacony/nieopłacony Status [checkbox]Etykiety Chmura tagówCzas trwania: h 35 min. Długość: 2 100 000 msDr Home. Sezon 1 odcinek 29Nonszalancja nazewniczaZwiększamy efektywność zespołów projektowych 9
  10. 10. www.bnsit.plNazwa, którą ja się posługiwałem Nazwa, którą zobaczyłemMoja kinoteka Lista filmówDodaj serial Dodaj kategorięDodaj odcinek Dodaj plik flvOpłacony/nieopłacony Status [checkbox]Etykiety Chmura tagówCzas trwania: h 35 min. Długość: 2 100 000 msDr Home. Sezon 1 odcinek 29 87a1b230ff910912.flvNonszalancja nazewniczaZwiększamy efektywność zespołów projektowych 10
  11. 11. www.bnsit.plRzeczywistość, słowa, znaczenia, regułyZwiększamy efektywność zespołów projektowych 11
  12. 12. www.bnsit.plRzeczywistość, słowa, znaczenia, regułyZwiększamy efektywność zespołów projektowych 12
  13. 13. www.bnsit.plCo można zrobić z…Zwiększamy efektywność zespołów projektowych 13Listą pracowników Ewidencją pracowników• Dodać pracownika• Usunąć pracownika• Usunąć wszystkichpracowników• Wciągnąć pracownika doewidencji• Wyciągnąć kartotekę pracownika• Oznaczyć urlop• Oznaczyć zwolnienie chorobowe• Wyciągnąć świadectwo pracy
  14. 14. www.bnsit.plProgramujesz to, co nazywaszZwiększamy efektywność zespołów projektowych 14List<Employee> employees...//...EmployeeFile employeeFile = findEmployeeFile( personalID );employeeFile.getEmergencyContactInformation();
  15. 15. www.bnsit.plA potem powstaje architekturaZwiększamy efektywność zespołów projektowych 15List<Employee> employees...//...EmployeeFile employeeFile = findEmployeeFile( personalID );employeeFile.getEmergencyContactInformation();
  16. 16. www.bnsit.plI dzieją się z nią dziwne rzeczyZwiększamy efektywność zespołów projektowych 16
  17. 17. www.bnsit.plIle %% wymagań naprawdę się zmienia?Zwiększamy efektywność zespołów projektowych 17
  18. 18. www.bnsit.plJakie znaczenie może mieć słowo?Zwiększamy efektywność zespołów projektowych 18
  19. 19. www.bnsit.plS.O.L.I.DPodstawowe zasadyZwiększamy efektywność zespołów projektowych 19
  20. 20. www.bnsit.plPrzykład: Geometria euklidesowa ;)Zwiększamy efektywność zespołów projektowych 20
  21. 21. www.bnsit.plPrzykład: Geometria euklidesowa ;)Zwiększamy efektywność zespołów projektowych 21
  22. 22. www.bnsit.pl... ale jeśli nie znasz podstawowych zasadZwiększamy efektywność zespołów projektowych 22
  23. 23. www.bnsit.plS.O.L.I.DPodstawowe zasadyZwiększamy efektywność zespołów projektowych 23
  24. 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łatwiejszychlecz p o d s t a w ę• Trzeba sporo doświadczenia, aby zajmować sięsprawami oczywistymiTo zbyt banalne?Zwiększamy efektywność zespołów projektowych 24
  25. 25. www.bnsit.plCo chcemy zacząć zauważać?Zwiększamy efektywność zespołów projektowych 25
  26. 26. www.bnsit.plNazwa klasy cLOCLocationManager 26 752NetworkItem 10 955TransferOperations 6 871CalculatorsManager 4 325MonitorManager 1 514VTViewInvoker 48ContactService 47Address 34DataRange 21LoggedUserDetailsModel 13Jeśli chodzi o klasy…Zwiększamy efektywność zespołów projektowych 26
  27. 27. www.bnsit.plHipoteza #1Zwiększamy efektywność zespołów projektowych 27
  28. 28. www.bnsit.plHipoteza #2Zwiększamy efektywność zespołów projektowych 28
  29. 29. www.bnsit.plHipoteza #3Zwiększamy efektywność zespołów projektowych 29
  30. 30. www.bnsit.plNazwa metody mLOC Nazwa klasymLOC/cLOCcheckDataProtectionStatus 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
  31. 31. www.bnsit.plHipoteza #4Zwiększamy efektywność zespołów projektowych 31
  32. 32. www.bnsit.plHipoteza #5Zwiększamy efektywność zespołów projektowych 32
  33. 33. www.bnsit.plHipoteza #6Zwiększamy efektywność zespołów projektowych 33
  34. 34. www.bnsit.plExtract Method?Jeśli chodzi o zmienne…Zwiększamy efektywność zespołów projektowych 34
  35. 35. www.bnsit.plJeśli chodzi o pakiety…Zwiększamy efektywność zespołów projektowych 35Axel Fontaine, Architecting for Continuous Deliveryhttp://2013.33degree.org/talk/show/51
  36. 36. www.bnsit.plBiznes ARCH Klasy Metody ZmienneSmellPrzykładRefaktoringCo sprawia brak umiejętności n a z y w a n i a?Zwiększamy efektywność zespołów projektowych 36
  37. 37. www.bnsit.plBiznes ARCH Klasy Metody ZmienneSmell Zmiennaquasi-globalnaPrzykładRefaktoringCo sprawia brak umiejętności n a z y w a n i a?Zwiększamy efektywność zespołów projektowych 37
  38. 38. www.bnsit.plBiznes ARCH Klasy Metody ZmienneSmell Zmiennaquasi-globalnaPrzykład tmp1, tmp2,tmp3RefaktoringCo sprawia brak umiejętności n a z y w a n i a?Zwiększamy efektywność zespołów projektowych 38
  39. 39. www.bnsit.plBiznes ARCH Klasy Metody ZmienneSmell Zmiennaquasi-globalnaPrzykład tmp1, tmp2,tmp3RefaktoringSplitTemporaryVariablehttp://refactoring.comCo sprawia brak umiejętności n a z y w a n i a?Zwiększamy efektywność zespołów projektowych 39
  40. 40. www.bnsit.plBiznes ARCH Klasy Metody ZmienneSmell Long Method Zmiennaquasi-globalnaPrzykład tmp1, tmp2,tmp3RefaktoringSplitTemporaryVariablehttp://refactoring.comCo sprawia brak umiejętności n a z y w a n i a?Zwiększamy efektywność zespołów projektowych 40
  41. 41. www.bnsit.plBiznes ARCH Klasy Metody ZmienneSmell Long Method Zmiennaquasi-globalnaPrzykład process,performOperationtmp1, tmp2,tmp3RefaktoringSplitTemporaryVariablehttp://refactoring.comCo sprawia brak umiejętności n a z y w a n i a?Zwiększamy efektywność zespołów projektowych 41
  42. 42. www.bnsit.plBiznes ARCH Klasy Metody ZmienneSmell Long Method Zmiennaquasi-globalnaPrzykład process,performOperationtmp1, tmp2,tmp3RefaktoringExtract Methodhttp://refactoring.comSplitTemporaryVariablehttp://refactoring.comCo sprawia brak umiejętności n a z y w a n i a?Zwiększamy efektywność zespołów projektowych 42
  43. 43. www.bnsit.plBiznes ARCH Klasy Metody ZmienneSmell God Class Long Method Zmiennaquasi-globalnaPrzykład process,performOperationtmp1, tmp2,tmp3RefaktoringExtract Methodhttp://refactoring.comSplitTemporaryVariablehttp://refactoring.comCo sprawia brak umiejętności n a z y w a n i a?Zwiększamy efektywność zespołów projektowych 43
  44. 44. www.bnsit.plBiznes ARCH Klasy Metody ZmienneSmell God Class Long Method Zmiennaquasi-globalnaPrzykład LocationManager,NetworkItemprocess,performOperationtmp1, tmp2,tmp3RefaktoringExtract Methodhttp://refactoring.comSplitTemporaryVariablehttp://refactoring.comCo sprawia brak umiejętności n a z y w a n i a?Zwiększamy efektywność zespołów projektowych 44
  45. 45. www.bnsit.plBiznes ARCH Klasy Metody ZmienneSmell God Class Long Method Zmiennaquasi-globalnaPrzykład LocationManager,NetworkItemprocess,performOperationtmp1, tmp2,tmp3RefaktoringExtract Classhttp://refactoring.comExtract Methodhttp://refactoring.comSplitTemporaryVariablehttp://refactoring.comCo sprawia brak umiejętności n a z y w a n i a?Zwiększamy efektywność zespołów projektowych 45
  46. 46. www.bnsit.plBiznes ARCH Klasy Metody ZmienneSmell Big Ball of Mudhttp://laputan.org/mud/God Class Long Method Zmiennaquasi-globalnaPrzykład LocationManager,NetworkItemprocess,performOperationtmp1, tmp2,tmp3RefaktoringExtract Classhttp://refactoring.comExtract Methodhttp://refactoring.comSplitTemporaryVariablehttp://refactoring.comCo sprawia brak umiejętności n a z y w a n i a?Zwiększamy efektywność zespołów projektowych 46
  47. 47. www.bnsit.plBiznes ARCH Klasy Metody ZmienneSmell Big Ball of Mudhttp://laputan.org/mud/God Class Long Method Zmiennaquasi-globalnaPrzykład Genreic PluginFramework,Multi-DevicePlatformLocationManager,NetworkItemprocess,performOperationtmp1, tmp2,tmp3RefaktoringExtract Classhttp://refactoring.comExtract Methodhttp://refactoring.comSplitTemporaryVariablehttp://refactoring.comCo sprawia brak umiejętności n a z y w a n i a?Zwiększamy efektywność zespołów projektowych 47
  48. 48. www.bnsit.plBiznes ARCH Klasy Metody ZmienneSmell Big Ball of Mudhttp://laputan.org/mud/God Class Long Method Zmiennaquasi-globalnaPrzykład Genreic PluginFramework,Multi-DevicePlatformLocationManager,NetworkItemprocess,performOperationtmp1, tmp2,tmp3RefaktoringWprowadźwzorzecarchitektonicznyExtract Classhttp://refactoring.comExtract Methodhttp://refactoring.comSplitTemporaryVariablehttp://refactoring.comCo sprawia brak umiejętności n a z y w a n i a?Zwiększamy efektywność zespołów projektowych 48
  49. 49. www.bnsit.plBiznes ARCH Klasy Metody ZmienneSmell Sexy Vision Big Ball of Mudhttp://laputan.org/mud/God Class Long Method Zmiennaquasi-globalnaPrzykład Genreic PluginFramework,Multi-DevicePlatformLocationManager,NetworkItemprocess,performOperationtmp1, tmp2,tmp3RefaktoringWprowadźwzorzecarchitektonicznyExtract Classhttp://refactoring.comExtract Methodhttp://refactoring.comSplitTemporaryVariablehttp://refactoring.comCo sprawia brak umiejętności n a z y w a n i a?Zwiększamy efektywność zespołów projektowych 49
  50. 50. www.bnsit.plBiznes ARCH Klasy Metody ZmienneSmell Sexy Vision Big Ball of Mudhttp://laputan.org/mud/God Class Long Method Zmiennaquasi-globalnaPrzykład ZSI, BI, DW Genreic PluginFramework,Multi-DevicePlatformLocationManager,NetworkItemprocess,performOperationtmp1, tmp2,tmp3RefaktoringWprowadźwzorzecarchitektonicznyExtract Classhttp://refactoring.comExtract Methodhttp://refactoring.comSplitTemporaryVariablehttp://refactoring.comCo sprawia brak umiejętności n a z y w a n i a?Zwiększamy efektywność zespołów projektowych 50
  51. 51. www.bnsit.plBiznes ARCH Klasy Metody ZmienneSmell Sexy Vision Big Ball of Mudhttp://laputan.org/mud/God Class Long Method Zmiennaquasi-globalnaPrzykład ZSI, BI, DW Genreic PluginFramework,Multi-DevicePlatformLocationManager,NetworkItemprocess,performOperationtmp1, tmp2,tmp3RefaktoringZdefiniuj,podziel,zmień procesWprowadźwzorzecarchitektonicznyExtract Classhttp://refactoring.comExtract Methodhttp://refactoring.comSplitTemporaryVariablehttp://refactoring.comCo sprawia brak umiejętności n a z y w a n i a?Zwiększamy efektywność zespołów projektowych 51
  52. 52. www.bnsit.plBiznes ARCH Klasy Metody ZmienneSmell Sexy Vision Big Ball of Mudhttp://laputan.org/mud/God Class Long Method Zmiennaquasi-globalnaPrzykład ZSI, BI, DW Genreic PluginFramework,Multi-DevicePlatformLocationManager,NetworkItemprocess,performOperationtmp1, tmp2,tmp3RefaktoringZdefiniuj,podziel,zmień procesWprowadźwzorzecarchitektonicznyExtract Classhttp://refactoring.comExtract Methodhttp://refactoring.comSplitTemporaryVariablehttp://refactoring.comSkąd wieje wiatr?Zwiększamy efektywność zespołów projektowych 52
  53. 53. www.bnsit.plprocess( name, surname,age, street, city,postalCode, area);//...Biznes ARCH Klasy Metody ZmienneSkąd wieje wiatr?Zwiększamy efektywność zespołów projektowych 53
  54. 54. www.bnsit.plDiagnoza i leczenieZwiększamy efektywność zespołów projektowych 54
  55. 55. www.bnsit.plAbstrakcja, implementacjaZwiększamy efektywność zespołów projektowych 55
  56. 56. www.bnsit.plAbstrakcja, implementacjaZwiększamy efektywność zespołów projektowych 56
  57. 57. www.bnsit.plAbstrakcja, implementacja: Kiedy? co?Zwiększamy efektywność zespołów projektowych 57
  58. 58. www.bnsit.plAbstrakcja, implementacja: Kiedy? co?Zwiększamy efektywność zespołów projektowych 58
  59. 59. www.bnsit.plAbstrakcja, implementacja: Kiedy? co?Zwiększamy efektywność zespołów projektowych 59
  60. 60. www.bnsit.plAbstrakcja, implementacja w procesie – NORZwiększamy efektywność zespołów projektowych 60
  61. 61. www.bnsit.plSkąd się biorą dobre nazwyZwiększamy efektywność zespołów projektowych 61Biznes ARCH Klasy Metody ZmienneList<Employee> employees...//...EmployeeFile employeeFile = findEmployeeFile( personalID );employeeFile.getEmergencyContactInformation();
  62. 62. www.bnsit.pl Zwiększamy efektywność zespołów projektowych 62Kadry# 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. 63. www.bnsit.plPomieszanie z poplątaniemZwiększamy efektywność zespołów projektowych 63http://pl.wikipedia.org/wiki/Flagi_państw_świataPracownik employee =findPracownik( employeeId );int wiek = employee.getAge();//Vafanapoli! Non capisco!Lavoratore lavoratore =trovareLavoratore( id );int età = lavoratore.età();//Bravo! Bravissimo!
  64. 64. www.bnsit.pl# Tylko język, w którym myśli klient, pozwalaswobodne eksplorować domenę klienta inadawać nazwy pojęciom# Java pozwala, ale co z get* set*# Język programowania nie powinien narzucaćkonwencji kodowania bazującej najakimkolwiek języku naturalnymProgramowanie w języku klienta?Zwiększamy efektywność zespołów projektowych 64
  65. 65. www.bnsit.plPodsumowującZwiększamy efektywność zespołów projektowych 65
  66. 66. www.bnsit.plS.O.L.I.DPodstawowe zasadyZwiększamy efektywność zespołów projektowych 66
  67. 67. Dziękuję za Twój czas!Zwiększamy efektywność zespołówprojektowych67

×