Tak, kochanie, funkcja może być coraz mniejsza, a to, czy jest dobre czy złe, zależy od używanego języka / frameworka.
Moim zdaniem pracuję głównie nad technologiami Front End, małe funkcje są przeważnie używane jako funkcje pomocnicze, które z pewnością będziesz ich używać podczas pracy z małymi filtrami i przy użyciu tej samej logiki w całej aplikacji. Jeśli twoja aplikacja ma zbyt dużo wspólnej logiki, będzie mnóstwo małych funkcji.
Ale w aplikacji, w której nie masz wspólnej logiki, nie będziesz musiał tworzyć małych funkcji, ale możesz podzielić kod na segmenty, w których zarządzanie i zrozumienie staje się łatwe.
Ogólnie rzecz biorąc, rozbicie ogromnego kodu na małą funkcję to bardzo dobre podejście. W nowoczesnych ramach i językach będziesz musiał to zrobić np
data => initScroll(data)
jest anonimową funkcją w JavaScript 2017 i maszynopisie ES 2017
getMarketSegments() {
this.marketService.getAllSegments(this.project.id)
.subscribe(data => this.segments = data, error => console.log(error.toString()));
}
w powyższym kodzie widać 3 deklarację funkcji i 2 wywołania funkcji, jest to proste zgłoszenie serwisowe w Angular 4 z maszynowym skryptem. Możesz myśleć o tym jak o swoich wymaganiach
([] 0)
([x] 1)
([x y] 2)
Powyżej są 3 anonimowe funkcje w języku clojure
(def hello (fn [] "Hello world"))
Powyższa jest deklaracją funkcjonalną w zamknięciu
Więc tak, FUNKCJE mogą być mniejsze, ale czy są dobre czy złe, jeśli masz takie funkcje jak:
incrementNumber(numb) { return ++numb; }
Cóż, nie jest to dobrą praktyką, ale co zrobić, jeśli używasz tej funkcji w znaczniku HTML, tak jak robimy to w Angular Framework, jeśli nie było obsługi Increment lub Decrement w Angularowych szablonach HTML, to byłoby to rozwiązanie dla mnie.
Weźmy inny przykład
insertInArray(array, newKey) {
if (!array.includes(newKey)) {
array.push(newKey);
}
}
Powyższy przykład jest koniecznością podczas gry, gdy tablice wewnątrz kątowych szablonów HTML. Czasami będziesz musiał stworzyć małe funkcje
Assert.AreEqual<int>(expected, actual, message, arg1, arg2, arg3, ...);
. Drugi jest w porządku, jak jest. Potencjalnie dołączę opcjonalną flagę bool, która decyduje, czy zgłosić wyjątek / etc. w przypadku, gdy oddzwonienie nie jest funkcją.