W JavaScript, PL / SQL i niektórych innych językach funkcje mogą być zagnieżdżone, tzn. Zadeklarowane w innej funkcji. Można to wykorzystać do podzielenia dużej funkcji na mniejsze części, ale zachowaj je w kontekście większej funkcji.
function doTooMuch() {
function doSomething () {
...
}
function doSomethingElse() {
...
}
function doYetAnotherThing() {
...
}
// doTooMuch body
doSomething();
doSomethingElse();
doYetAnotherThing();
}
W niektórych przypadkach, gdy te mniejsze funkcje nie używają zmiennych lokalnych większej funkcji, można to łatwo zmienić na wersję, w której wszystkie funkcje są odszyfrowane.
function doSomething () {
...
}
function doSomethingElse() {
...
}
function doYetAnotherThing() {
...
}
function doTooMuch() {
doSomething();
doSomethingElse();
doYetAnotherThing();
}
Zakładając, że tych zagnieżdżonych funkcji nie można używać nigdzie indziej, czy lepiej jest trzymać je w kontekście dużej funkcji, czy jest to złe, ponieważ właśnie to sprawia, że duża funkcja jest dobra?
źródło
jquery(function($){ $('#id').click(function(){...}); }
To jedno z tych pytań, na które nie ma właściwej odpowiedzi, i przychodzą mi na myśl słowa „osobiste preferencje”, „trening zespołowy”. Moim zdaniem małe funkcje (teraz jest to kolejna subiektywna rzecz), które nie są nigdzie używane, należą do ich funkcji nadrzędnych, zwłaszcza gdy można je nazwać bezimiennie.
źródło
To pytanie nie ma właściwej odpowiedzi, ponieważ żaden wybór nie maksymalizuje enkapsulacji. Jeśli je zagnieżdżycie, nadal będą mieli dostęp do zmiennych, których nie powinni. Jeśli nie, to inne funkcje mają dostęp do funkcji, których nie powinny. Tak czy inaczej, przegrywasz.
źródło