“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: 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.
@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.
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)
@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.
@zakopiak w clean architecture Robert C Martin tłumaczy SRP nie jako "jedna rzecz do zrobienia" ale jako "jeden powód do zmiany". Myślę, że rozumienie SRP w ten sposób wiele ułatwia. Jak coś to @jaroslaw-stadnicki ma kurs na ten temat @udemy
@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 ;)
Czy w polskim interesie nie byłoby lepsze żeby podpisać pakt z Rosją o nieagresji i zaatakować Ukrainę od jej zachodu. Granice polsko rosyjskie umieścić w okolicy Kijowa. Przecież Ukraińcy mają #!$%@? na swoją ojczyznę, w końcu to twór, liczy się tylko dolar. #wojna #ukraina
“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?]
@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)
Skrótem, najpierw piszesz test, później funkcję.
A z tym kuponem taniej: https://www.udemy.com/praktyczny-kurs-solid/?couponCode=SOLID-WYKOP
"Poziom wcięć w funkcji nie powinien przekraczać dwóch."
O co chodzi? :D mógłbyś krótko wyjaśnić? :)