Ja mam taką metauwagę:
Dobry kod powinien być czytelny i zrozumiały po samych nazwach klas/metod/zmiennych,
dobry kod nie musi być czytelny po samych nazwach klas, bo może być czytelny na poziomie samego języka. I teraz:
number % 2 == 0;
Myślę, że dla każdego programisty, który jest w stanie napisać fizz-buzz (klasyczne zadanie sprawdzające, czy znasz podstawy programowania), zapis number % 2
będzie zrozumiały. Tak samo jeśli masz kod a + b
to nie musisz wydzielać go do funkcji addTwoNumbers(a, b)
bo to by tylko zaciemniło kod.
Nie ma nic złego w używaniu operatorów matematycznych (czy innych) istniejących w języku. Po to one są w końcu. To operatory są już same w sobie cukrem składniowym i świadczą o tym, że programujemy w języku wysokiego poziomu a nie np. w assemblerze*
Chyba, że faktycznie masz jakiś skomplikowany wzór matematyczny
x * x * 20 + x * 10 + 498 * sqrt(cos(angle) * r + sin(angle) * r2)
(ten wzór nie ma sensu oczywiście, tak wymyśliłem na poczekaniu)
tutaj będzie miało więcej sensu wydzielenie tego do osobnej funkcji i nazwanie funkcji nazwą wzoru.
*swoją drogą ciekawy trend. W C++ pamiętam ludzie uciekali od funkcji i tworzyli własne operatory (żeby mogli pisząc transformacje geometryczne napisać np. vec1 + vec2
zamiast addVectors(vec1, vec2)
. A w językach, w których nie da się przeciążać operatorów jak widać ludzie biorą operatory i zamieniają w funkcje. Np. dzisiaj się dowiedziałem, że istnieje biblioteka JS, która wykonuje operację a > 0
: npmjs.com/package/is-positive . Widać ludzie zawsze będą niezadowoleni z tego co mają w języku...