Wpis z mikrobloga

7/100 dni z książką

“Funkcje nie powinny mieć 100 wierszy długości. Funkcje powinny mieć właśnie nie więcej niż 20 wierszy.
[...]
Poziom wcięć w funkcji nie powinien przekraczać dwóch.
[...]
FUNKCJE POWINNY WYKONYWAĆ JEDNĄ OPERACJĘ. POWINNY ROBIĆ TO DOBRZE. POWINNY ROBIĆ TYLKO TO.


#feaoftruss #czystykod #programowanie #programista15k #webdev #gamedev

Podobało się? To zaplusuj i zapisz się do wołania (link w stopce)

************

[Chcesz być wołany?]
  • 13
  • Odpowiedz
@FEAofTruss: Dodałbym jeszcze, funkcje powinny być testowalne. Dobrze od razu pomyśleć jak będzie wyglądał unit test. Właśnie pisząc testy czesto też dzieli się funkcje na mniejsze.
  • Odpowiedz
@Kierman: Zgadzam się całkowicie. Dodatkowo od kilku dni naprawdę staram się stosować do tej zasady i subiektywnie mogę powiedzieć, że "czystość" mojego kodu znacząco wzrosła.
  • Odpowiedz
FUNKCJE POWINNY WYKONYWAĆ JEDNĄ OPERACJĘ. POWINNY ROBIĆ TO DOBRZE. POWINNY ROBIĆ TYLKO TO.”


@FEAofTruss: W skrócie SRP.

Jednak jest jedno "ale". W uproszczeniu powiem, że skoro funkcja ma 20 linii, to znaczy, że wykonuje 20 rzeczy (trzeba odliczyć nawiasy itp, ale upraszczam). To powoduje często błędne zrozumienie SRP i przesadzone rozdrobnienie kodu.
Więc jak ma robić jedną? Otóż brakuje tutaj pojęcia poziomu abstrakcji. Funkcja (lub ogólnie również klasa, metoda, pakiet itd)
  • Odpowiedz
@FearFactory: Tak, chociaż takie czyste TDD zakłada najpierw napisanie testu co w praktyce zdarza się rzadko :) Nawet szybka rozkmina jak to by było testowane dobrze robi dla kodu.
  • Odpowiedz
  • 2
@redfox w większości języków wcięcia są wykorzystywane, aby kod był bardziej czytelny i nie mają jakiegoś innego specjalnego znaczenia. W związku z tym chodzi tutaj oto, aby np. nie pisać wielokrotnie zagnieżdżonych if-ów, bo kod wtedy trudniej zinterpretować czytającemu. Więc w funkcji powinny wystąpić maksymalnie dwa wycięcia. Nie wiem czy wystarczająco jasno, jak coś to dopytuj ;)
  • Odpowiedz