Zeyomir's Blog Bo piękniej jest wiedzieć coś o wszystkim…

3Kwi/12Off
» «

Obiektowa gimnastyka

Dziś będzie krótko, ale treściwie. "Obiektowa gimnastyka" (oryg. "Object Calisthenics") to rozdział autorstwa Jeffa Baya w książce p.t. "ThoughtWorks Anthology". Jest to ćwiczenie, mające wyrobić dobre nawyki i dać głębsze zrozumienie paradygmatu obiektowego.

Polega ono na napisaniu krótkiego (około 1k  loc) projektu, zgodnie z 9 zasadami:

  • Tylko jeden poziom wcięcia na metodę
    class Foo { //klasa
      public void bar() { //metoda
        doSomething(); //ciało metody
        while(warunek) {
          doSomethingElse(); //wcięcie w metodzie- wszystko ok
          if(innyWarunek) {
            kaboom(); //ale całego tego ifa już tu nie powinno być!
          }
        }
      }
    }
    
  • Nie używamy słowa kluczowego else
  • Opakowujemy wszystkie pola będące typami prymitywnymi (+ Stringi)
  • Tylko jedna kropka na linię (bardzo podobne do zasady Demeter, w uproszczeniu "Baw się swoimi zabawkami, baw się zabawkami które ktoś Ci dał i które sam skonstruowałeś. NIGDY nie baw się zabawkami swoich zabawek")
  • Nie skracamy nazw zmiennych/funkcji
  • Metody, klasy i pakiety mają być 'jak najmniejsze' (pakiet max 10 klas, klasa mieszcząca się na ekranie- max 50 loc; co do metod, można przyjąć zasadę 5 średników)
  • Klasa może mieć max 2 pola
  • Każda kolekcja musi być opakowana w osobną klasę (innymi słowy, jeżeli dana klasa ma pole będące kolekcją, to nie może mieć już żadnego innego pola)
  • Nie używamy getterów ani setterów (to samo dotyczy properties w C#)

Nie mam zamiaru się nad nimi rozwodzić, jedne są bardziej szokujące i ekstremalne, inne mniej ;). Jak już wspominałem, jest to tylko ćwiczenie, nikt nie każe tak pisać na co dzień (swoją drogą, powinno to wyglądać tak: piszemy testy, piszemy prosty kod który je przechodzi, refaktoryzujemy kod do zgodności z tymi zasadami; próba pisania od razu 'na czysto' przyniesie tylko frustrację i zniechęcenie).

Po skończeniu ćwiczenia (do którego wykonania gorąco zachęcam) można te zasady traktować jako zbiór 'niedoścignionych ideałów' do których należy dążyć ze swoim codziennym kodem.

Jeśli ktoś chce się dowiedzieć więcej, to polecam:

» «
Komentarze (2) Trackbacks (0)
  1. część tych zasad jest ok. sam wraz ze zdobywanym doświadczeniem sobie je wypracowałem. ale niektóre.. :)

    • ja osobiście np nie ogarniam zupełnie dlaczego nie używać else’a 😛
      reszta jest dla mnie ok jako ‚wskazówki’, część nadaje się nawet do stosowania na co dzień (ewentualnie w trochę mniej restrykcyjnych wersjach), ale ten else… no nie rozumiem 😛


Trackbacks are disabled.