Na bok: Napisałem to w odpowiedzi na pytanie Dallina (teraz zamknięte), ale nadal uważam, że to może być komuś pomocne, więc proszę bardzo
Myślę, że powód atomizacji funkcji jest 2-krotny, a jak wspomina @jozefg, zależy od używanego języka.
Rozdzielenie obaw
Głównym powodem tego jest oddzielenie różnych fragmentów kodu, więc każdy blok kodu, który nie przyczynia się bezpośrednio do pożądanego wyniku / zamiaru funkcji, stanowi osobną kwestię i może zostać wyodrębniony.
Załóżmy, że masz zadanie w tle, które również aktualizuje pasek postępu, aktualizacja paska postępu nie jest bezpośrednio związana z zadaniem długo działającym, więc należy go wyodrębnić, nawet jeśli jest to jedyny fragment kodu, który korzysta z paska postępu.
Powiedz w JavaScript, że masz funkcję getMyData (), która 1) buduje komunikat mydła na podstawie parametrów, 2) inicjuje odwołanie do usługi, 3) wywołuje usługę z komunikatem mydła, 4) analizuje wynik, 5) zwraca wynik. Wydaje się rozsądne, napisałem tę dokładną funkcję wiele razy - ale tak naprawdę można ją podzielić na 3 funkcje prywatne, w tym kod dla 3 i 5 (jeśli to), ponieważ żaden inny kod nie jest bezpośrednio odpowiedzialny za pobieranie danych z usługi .
Ulepszone działanie debugowania
Jeśli masz funkcje całkowicie atomowe, ślad stosu staje się listą zadań, zawierającą wszystkie pomyślnie wykonane kody, tj .:
- Uzyskaj moje dane
- Zbuduj wiadomość z mydłem
- Zainicjuj odniesienie do usługi
- Odpowiedź przeanalizowanej usługi - BŁĄD
byłoby bardziej interesujące niż stwierdzenie, że wystąpił błąd podczas pobierania danych. Ale niektóre narzędzia są jeszcze bardziej przydatne do debugowania szczegółowych drzew połączeń, na przykład na przykład Płótno debugowania Microsofts .
Rozumiem również twoje obawy, że przestrzeganie kodu napisanego w ten sposób może być trudne, ponieważ pod koniec dnia musisz wybrać kolejność funkcji w jednym pliku, gdzie jako drzewo wywołań byłoby dużo bardziej skomplikowane niż to. . Ale jeśli funkcje są dobrze nazwane (intellisense pozwala mi używać 3-4 wyrazów wielbłąda w dowolnej funkcji, która mi się podoba, bez spowalniania mnie) i ma strukturę z interfejsem publicznym na górze pliku, twój kod będzie czytał jak pseudo-kod, który jest zdecydowanie najprostszym sposobem na uzyskanie wysokiego poziomu zrozumienia bazy kodu.
Do waszej informacji - to jedna z tych rzeczy „róbcie, co mówię nie tak, jak robię”, utrzymywanie kodu atomowego jest bezcelowe, chyba że jesteście bezwzględnie z nim zgodni IMHO, czego nie jestem.