Loading presentation...
Prezi is an interactive zooming presentation

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Zaginione rozdziały "Boskiego kodu" - Siedem Grzechów Głównych

No description
by

Szczepan Faber

on 8 April 2011

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Zaginione rozdziały "Boskiego kodu" - Siedem Grzechów Głównych

Chrześcijańska otwartość i szacunek Herezja, czy prawda?
"Every class should be abstract or final" Spójność Prawdziwego Chrześcijanina Z Elementarza Pobożnego Programisty:
- iteracja kończy się rachunkiem sumienia PYCHA: czy zaniedbywałeś właściwe nazwenictwo
lekceważąc istotę spójności? CHCIWOŚĆ: ile razy wpadłeś w sidła dziedziczenia pragnąc reużyć kod? ZAZDROŚĆ: czy w ciągu ostatniego roku wzgardziłeś przykazaniem 'simple design' i zbudowałeś w pracy choć jeden framework? NIEUMIARKOWANIE: czy bezzasadnie komplikowales obiekty metodami prywatnymi? NIECZYSTOŚĆ: czy nie potrafiłeś wyzbyć się pokus globalnego stanu? GNIEW: czy wyrzekłeś się otwartości i szacunku do bliźniego poprzez stosowanie finalnych klas i metod? LENISTWO: czy bluźnierczo zaniechałeś pisania kodu obiektowego na rzecz statycznych metod? Koło Fortuny Jeśli na którekolwiek pytanie odpowiedziałeś TAK, pora na: Żal za grzechy (z ang. retrospection) Mocne postanowienie poprawy (z ang. action plan) bo inaczej... Zaginiony rozdział z ... Szczepan Faber
http://gradleware.com
http://gradle.org
http://mockito.org Bartosz Bańkowski
http://mockito.org by... jak mowia podreczniki historii powszechnej,
heretykow nalezy palic. W dzisiejszych czasach dysponujemy
symulatorami walki z herezja. Metoda prywatna jest herezją. Jest sprzeczna ideologicznie
z istotą programowania obiektowego. W obiektówce chodzi o to,,
żeby rozwiązywać skomplikowane problemy,
poprzez sprawiedliwe rozdzielenie złożoności do osobnych, względnie
małych obiektów, które same w sobie nie będą skomplikowane.
Prywatna metoda to nic innego tylko zwiększanie złożoności pojedynczego
obiektu. Iceberg to metafora obiektu o małym interfejscie zew. (np. 1
publiczna metoda), ale o dużej złożoności (np. konsumujące się nawzajem
prywatne metody) Statyczna metoda: znowu sprzeczne z ideą programowania obiektowego.
Żeby to zrozumieć, poznajcie Pana Staszka, który kiedyś napisał
program fiskalny dla piekarni w pascalu.
Procedura na 100K linii + globalny stan dowolnie zmieniany podczas działania procedury.
Metody statczyne w javie to jest wlasnie kod proceduralny. To nie jest zamknięcie złożoności
w obiekcie, tylko stworzenie globalnej procedury, dla której obiekt zawierający jest tylko
namespace'm. Programowanie obiektowe jest fajne jak klocki lego! Budowanie większych modułów
przy pomocy malych klockow ktore same w sobie nie maja zadnej zlozonosci. Moduły później
posłużą nam do budowy skomplikowanych obiektów które zawierają funkcjonalności uzytkownika. To co wyniosłem ze studiów to obiektowość == polimorfizm + dziedziczenie + enkapsulacja
W praktyce okazało się to bzdurą i moje systemy wyglądały tak...
Obiektówka to nie polimorfizm (w dynamicznych językach teoretycznie każde wywołanie
ma cechy polimorficzne). To nie dziedziczenie, bo komponowanie obiektów ze sobą sprawdza się o niebo lepiej. Ani enkapsulacja, która przydaje się w niskopoziomowych
praktykach ale w praktyce ma małe znaczenie dla działania całego systemu. barbarzyńskie praktyki programistyczne:
metody prywatne
metody statyczne
dziedziczenie prywatna metoda == zwiększanie złożoności *pojedynczego* obiektu

OOP == upraszczanie poprzez delegację złożoności do *osobnych* obiektów statyczna metoda == globalna procedura, której klasa zawierająca jest jedynie rozszerzeniem nazwy...

OOP == umieszczanie zachowania w odpowiednich obiektach, możliwie blisko stanu, którego dotyczą dziedziczenie...
hierarchie trudne w zrozumieniu
droższy refactoring
niewygodne testowanie barbarzyństwo:
klasy final
metody final Herezja, czy prawda?
"Jeżeli klasa jest bezstanowa, jej metody powinny być statyczne" Herezja, czy prawda?
"każda metoda prywatna powinna być statyczna" Herezja, czy prawda?
"obiekt powinien mieć mało metod publicznych, a dużo metod prywatnych" Simple design? Barbarzyński brak spójności
- różne byty mające tą samą nazwę
- ten sam byt nazywany na różne sposoby Dzięki za uwagę!!!
Wasze grzechy są odpuszczone! Szczepan Faber
http://gradleware.com
http://gradle.org
http://mockito.org Bartosz Bańkowski
http://mockito.org Herezja, czy prawda?
"Dziedziczenie to najprostszy sposób na reużycie kodu"
Full transcript