Wpis z mikrobloga

#programowanie #programista15k #programista25k #pracait #pracbaza #korposwiat

Dla fanbojów SOLID i Uncle Boba powinno być specjalne miejsce w piekle. Nieadekwatne zasady do aktualnych czasów i wyzwań technologicznych, przesadne faworyzowanie i nawalanie wszędzie, do każdego problemu - dziedziczenia/polimorfizmu żeby się potem spuszczać nad tym jakie napisali nieczytelne i nielogiczne rozwiązanie rozsiane po setkach klas - zamiast użyć po prostu jak człowiek ifa/switcha albo użyć po prostu kompozycji

Paradoksem jest fakt, że ci określający się jako pasjonaci programowania poczytali raz o clean codzie z ubiegłej epoki i ślepo stosują się do tych zasad, które nie mają sensu, jest tysiąc razy innych, nowoczesnych, bardziej sensownych rozwiązań, ale garstka gości na całym świecie brandzluej się dię do 2-3 książek jednego gościa - Uncle Boba, przedstawiciel "chłopskiego rozumu" programowania. A jednocześnie cuckold korporacyjny, który głosi:

Tenet of professionalism: Work 40 hours for your employer and another 20 hours improving yourself. Always increase your own value.


Pracuj posłusznie 40h dla korporacji i potem 20h w tygodniu po godzinach, za frajer xD Wielki guru, autorytet programistów.
nad__czlowiek - #programowanie #programista15k #programista25k #pracait #pracbaza #ko...

źródło: fanboje

Pobierz
  • 42
@nad__czlowiek:
Ostatnio 3 tygodnie zmieniałem w apce przeliczającej piniondze(czyli poważnej) dwa pola na pewnym formularzu. Rozwalone to było jak gnój po polu na 50 klas i 3 osobne serwisy. Ktoś 10 lat temu napisał tak aby było łatwo rozbudowywalne.
No tylko przez 10 lat nie trzeba było ani razu rozbudowywać a raz zmodyfikować i modyfikacja była problematyczna.

Jedynym guru dla mnie jest osoba płacąca za moją pracę i jeśli ona chce
@MacDada: jeden test się pisze do jednej lub niewielu metod/funkcji a nie całej klasy w jednym teście, więc to nic nie zmienia czy masz 10 klas po 1 funkcji czy 1 klasa 10 funkcji

Wręcz jak masz 1 klasą i 10 funkcji powiedzmy 3 funkcje publiczne i 7 prywatnych więc wystarczy że przetestujesz te 3 funkcje, jak masz 10 klas po 1 funkcji to musisz zrobić 10 mocków ( ͡°
jeden test się pisze do jednej lub niewielu metod/funkcji a nie całej klasy w jednym teście, więc to nic nie zmienia czy masz 10 klas po 1 funkcji czy 1 klasa 10 funkcji


@nad__czlowiek: bardziej chodzi o to, że każdy if należy przetestować dwa razy – dla jego spełnienia i niespełnienia.

stąd każdy if powiększa bazę testów dla danej funkcji/klasy -> i jeśli oprócz tego jednego ifa jest również więcej logiki,
@nad__czlowiek: Pamiętam jak na studiach jeden profesor się zesrał, bo jeden student powiedział mu, że nie powinno się korzystać z dziedziczenia, bo to komplikuje niepotrzebnie kod. Chłop dosłownie się zaczerwienił i powiedział coś w stylu - "hur,dur to ja nie wiem jak pan programuje, nie chciałbym z panem pracować!" - taki wygląd fanów programowania obiektowego xD
Wręcz jak masz 1 klasą i 10 funkcji powiedzmy 3 funkcje publiczne i 7 prywatnych więc wystarczy że przetestujesz te 3 funkcje


@nad__czlowiek: Błąd. Te prywatne oczywiście również musisz przetestować -> tylko nie bezpośrednio, ale pośrednio przez te funkcje publiczne.

Kiedy mówi się o nietestowaniu funkcji prywatnych, to intencją jest, żeby ich nie zamieniać specjalnie na publiczne, tylko po to, żeby były (łatwiej) testowalne (np przy pomocy refleksji).

jak masz 10
jeden test się pisze do jednej lub niewielu metod/funkcji


@nad__czlowiek: A jeden test na co, jak odrzucasz SOLID i twoja funkcja może robić naraz wiele róznych rzeczy? Generalnie te wszystkie zasady clean code służa głównie temu, aby ktoś, kto siądzie do twojego kodu za pół roku dalej mógł się w nim rozczytać i w łatwy sposób zmieniać pojedyńcze elementy, bez rozwalania przy tym 10 innych miejsc w programie. I po to
no ale o tym napisałem


@nad__czlowiek: Trochę mało precyzyjnie, bo napisałeś

jak masz 1 klasą i 10 funkcji powiedzmy 3 funkcje publiczne i 7 prywatnych więc wystarczy że przetestujesz te 3 funkcje


@nad__czlowiek: Więc można to zrozumieć, jakbyś sugerował, że tych 7 funkcji się nie testuje.

Testujesz metodę publiczną która korzysta z 2 metod prywatnych za jednym razem


@nad__czlowiek: Tak. Oczywiście diabeł tkwi w szczegółach, ale jeśli te funkcje
deep classes, jest zdecydowanie bardziej praktyczne i czytelne niż SRP i miliard malutkich klas


@nad__czlowiek: okej, jak tak wolisz. ja nie używałem argumentu o czytelności, tylko o testowaniu. zdecydowanie łatwiej przetestować miliard malutkich SRPujących klas, niż jednego molocha. tylko tyle, i aż tyle.
@MacDada @nadczlowiek: sam fakt że zliczacie ile klas lub funkcji należy przetestować sugeruje że Wasze testy są prawdopodobnie zbyt granularne. Dużo wygodniejsze, bardziej niezawodne i lepiej znoszące refaktoring jest testowanie całego workflow biznesowego. Wtedy nie ma wielkiego znaczenia czy jest on realizowany przez 1 czy 10 klas, czy przez 1 czy 10 funkcji. Nie ma też wielkiego znaczenia to czy są prywatne lub publiczne oraz to czy spełniają SRP. Macie input,
Spoko, co roku do firmy przychodza jakieś świerzaki po studiach, które na własnym doświadczeniu muszą się przekonać, po co są różne standardy w programowaniu.


@wstanczyk: Dobre praktyki i standardy owszem są, tyle że to co jest w tej książce obok nich nawet nie stało.

Przede wszystkim wymyślono znacznie lepsze sposoby modelowania danych niż klasy z OOP, np. ADT (algebraiczne typy danych) - nie widziałem jeszcze kodu OOP, który po przepisaniu z
Dobre praktyki i standardy owszem są, tyle że to co jest w tej książce obok nich nawet nie stało.


@Krolik: Ale o jakiej ty książce mówisz? Bo ja nie mówiłem o żadnej konketnej, tylko o zestawie reguł, które się stosuje powszechnie. I one są zwykle też bardziej elastyczne i pozwalają na właśnie odpuszczanie z regułami tam, gdzie są lepsze rozwiązania.