Home > English > only private static … methods?

only private static … methods?

Kolejny temat który mi po 33degree został, powoli kończę zaległości :P

Wpis inspirowany przez Hamleta D’Arciego. Na jednej z prezentacji (bodaj o inspekcjach w Intellij), wspomniał on o jednej z własnych praktyk programowania. Mianowicie uważa on, że wszystkie metody prywatne powinny być statyczne.

Dlaczego?

Odpowiedź jest całkiem prosta: w przypadku statycznych metod, java nie pozwoli nam odwoływać się do nie statycznych pól klasy. Proste a genialne :)

No, ale moment, co zyskujemy na tym, że nie możemy korzystać z pól?

  • Wprowadzamy bardziej funkcyjne podejście do metod.
  • Można założyć, że dla 2 jednakowych inputów będziemy mieli taki sam output.
  • Problemy wielowątkowości nam odpadają (taaa, no powiedzmy). Nie próbujemy modyfikować w 2 wątkach tego samego pola.
  • Jest czyściej i łatwiej przeprowadzić ekstrakcję klasy, w końcu nasza metoda nie zależy bezpośrednio od klasy w której się znajduje.
  • Łatwiej jest zapewnić SRP (Single responsibility), metoda więc będzie robić raczej jedną rzecz a dobrze

Jednak nie ma róży bez kolców. Osobiście nie wprowadzę takiego stylu w projektach w których uczestniczę ponieważ

  • Tworzę czasem metody które, np opakowują geta z mapy, tak tylko żeby lepiej mi się czytało co to robi.
  • Dziwne by było dla mnie też, przekazywanie  np klasy DAO do statycznej metody, tylko po to by na przykład pobrać pierwszy obiekt z zwracanej listy (znów w sumie kryterium czytelności)
  • Mam uczulenie na słowo static. Ostatnio eksperymentuję nawet z stałymi które nie są statyczne (o czym może więcej kiedyś, jak uda mi się to do końca doprowadzić)
  • Bałbym się, że ktoś nie zrozumie moich zamiarów i następnego dnia znajdę w mojej klasie mnóstwo staticów :cold:

Pomysł jednak ciekawy, zachowam go na przyszłość i jak podciągnę własny skill level/zmienię styl, to może zacznę używać. Póki co nie mogę powiedzieć, że moje wszystkie metody prywatne mogą być statyczne.

Co do screencastów, o których wspominałem jakiś czas temu to sobie odpuszczam. Próbowałem, kilka podejść zrobiłem i stwierdzam, że nie mam obecnie dość czasu (i chęci :( ), a dostarczenie czegoś mocno na kolanie skleconego nie zadowala mnie.

Za to piszę coś małego w t5. Jak uda mi się kilka pomysłów wsadzić w ten mini projekcik, to wrzucę kod na sieć i na nim poćwiczymy T5 wspólnie :) W sumie dawno T5 nie używałem więc i mi się ćwiczenie przyda :)

Do następnego

Advertisements
Categories: English
  1. Artur
    15/06/2011 at 12:05

    ciekawi mnie tylko co w przypadku testów ? testowanie metod statycznych nie musi byc proste bo nie mozna latwo podmieniac mockow

    • 15/06/2011 at 13:05

      nie jest to problem, privatów i tak nie testujesz (o ile refleksją nie czeszecie w testach).

      Pytanie co z pakietowymi metodami, udostępnionymi tylko dla testów, ale w takim wypadku myślę, że bym po prostu zastosował ekstrakcję takiej prywatnej metody do publicznej klasy. Łatwość ekstrakcji do zewnętrznej klasy jest tu kluczowa.

  1. 09/09/2011 at 21:21

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: