Jak zachęcić kolegę, by pisał czyste funkcje?

0

Hej.

Piszę w pythonie. Mam w projekcie mniej doświadczonego kolegę, który pisze nieczyste funkcje.
Chcę go przekonać, by to zmienił. Mam jednak problem, bo całą moją argumentację można by zawrzeć w kilku zdaniach:

"Ziom! Kod jest wtedy elegancki. Zanim zacząłem tak pisać, miałem mnóstwo problemów.
Niestety, nie pamietam już, co to były za problemy. Teraz po prostu ich nie ma, bro!"

Na 90% taka argumentacja go nie przekona.

Ważne! Nie szukam argumentacji logicznej. Z moich obserwacji wynika, że logika rzadko kiedy kogoś do czegoś przekonuje.
Szukam za to inspiracji. Np. jakiegoś nagrania na YT, gdzie ktoś podaje zajebiste przykłady i mówi o czystych funkcjach z pasją w oczach.

Ma ktoś może jakiś pomysł?

[EDIT] Albo inaczej. Co Was przekonało do pisania czystych funkcji?

5
  • Łatwiejsze czytanie kodu: tylko input i output się liczy
  • Mniejsza szansa na zepsucie czegoś
  • Testy są banalne tj. assert foo(x) == y
  • można łatwo cachować jak jest taka potrzeba
  • kod jest łatwy do przeniesienia gdzieś indziej: trzeba tylko przenieść tą funkcję i funkcje wołane przez nią
  • nie trzeba myśleć o concurrency
2

Powiedz że kod będzie non-Pythonic ;)

7

Dlaczego chcesz go przekonać?

0

Ale python generalnie z tego co wiem średnio pasuja czyste funkcje do Pythona. Python nie wspiera efektywnie niemutowalnych kolekcji, jest sterowanie logiki przez wyjątki itp.

0

A możesz napisać, o jakiego rodzaju nieczystości chodzi?

1

W zależności jakie to nieczystości, ale ciągłe komentarze na code review. Ustalacie standard i się go trzymajcie :)

3
dedicated napisał(a):

[EDIT] Albo inaczej. Co Was przekonało do pisania czystych funkcji?

To że od globalnego/zmiennego stanu mieszało mi się w głowie

S4t napisał(a):

A możesz napisać, o jakiego rodzaju nieczystości chodzi?

Ja obstawiam że chodzi o pisanie Pure function:

In computer programming, a pure function is a function that has the following properties:[1][2]

  • the function return values are identical for identical arguments (no variation with local static variables, non-local variables, mutable reference arguments or input streams), and
  • the function application has no side effects (no mutation of local static variables, non-local variables, mutable reference arguments or input/output streams).

Thus a pure function is a computational analogue of a mathematical function. Some authors, particularly from the imperative language community, use the term "pure" for all functions that just have the above property 2[3][4] (discussed below).

0

Stwierdzenie, że ktoś piszę "nie czysto" jest IMO bardzo generalnym stwierdzeniem.

1
dedicated napisał(a):

[EDIT] Albo inaczej. Co Was przekonało do pisania czystych funkcji?

W krótkiej perspektywie - testowanie, w dłuższej - utrzymywanie projektu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1