Zaczynam dopiero od programowania funkcjonalnego i zastanawiam się, jak skomentować mój kod.
Komentowanie krótkiej funkcji wydaje się trochę zbędne, ponieważ nazwy i podpis powinny już powiedzieć ci wszystko, co musisz wiedzieć. Komentowanie większych funkcji również wydaje się nieco zbędne, ponieważ na ogół składają się one z mniejszych funkcji samoopisujących.
Jaki jest właściwy sposób komentowania programu funkcjonalnego? Czy powinienem stosować to samo podejście, co w programowaniu iteracyjnym?
functional-programming
comments
Tom Squires
źródło
źródło
Odpowiedzi:
Nazwa funkcji powinna powiedzieć, co robisz.
Wdrożenie powie Ci, jak to robisz.
Użyj komentarzy, aby wyjaśnić, dlaczego to robisz.
źródło
Z pewnością pytanie ma sens, ponieważ programy funkcjonalne zwykle mają inny poziom abstrakcji niż programy imperatywne.
Z tego powodu potrzebny jest inny styl dokumentacji. W programach iteracyjnych komentarz może być pomocny, podobnie jak w poniższym kodzie, ponieważ jego istota jest ukryta za płytą kotłową:
Ale jest to oczywiście nonsens w funkcjonalnym języku:
Lepszy:
źródło
Dokumentujemy funkcję dlatego, że czytelnicy nie chcą lub nie mogą odczytać treści funkcji. Z tego powodu należy dokumentować duże funkcje, nawet w językach funkcjonalnych. Nie ma znaczenia, czy łatwo jest zrozumieć, co robi funkcja, patrząc na jej implementację.
źródło
Funkcje należy komentować, jeśli sama nazwa funkcji i nazwa parametru nie wystarczą do określenia kontraktu .
Krótko mówiąc, umowa określa, czego oczekuje funkcja i co gwarantuje. Ściśle mówiąc, jeśli
GetEmployeeList
zwraca posortowaną listę, ale nie mówi tego ani w nazwie funkcji, ani w komentarzu, konsument tej funkcji nie może polegać na tym zachowaniu. Jest to nieudokumentowany szczegół implementacji, a autorGetEmployeeList
ma swobodę zmiany tego zachowania w dowolnym momencie.źródło
Sam komentarz nie powinien zawierać alternatywnego opisu tego, co robi kod (który tak naprawdę jest wyrażony przez sam kod), ale raczej wyjaśnienie powodów, dla których kod jest napisany tak, jak jest.
To powiedziawszy, nie widzę żadnego powodu, dlaczego komentarz powinien per se być różny w języku funkcjonalnym.
źródło
Stosuję to samo podejście do dokumentowania całego mojego kodu:
Jeśli nazwa i podpis typu nie mówią dokładnie, co robi funkcja, zwykle robisz to źle.
źródło
W wieku 25 lat pamiętasz rzeczy o wiele lepiej. W miarę starzenia się i korzystania z wielu systemów ze starszym kodem (tak, kod, który dziś piszesz, będzie starszym kodem za 10-15 lat), może być bardzo pomocny, jeśli pojawią się komentarze.
źródło