javascript - элемента - контент-менеджер. информационные блоки ответы




Являются ли анонимные функции плохой практикой в JavaScript? (5)

Я читал, что использование анонимных функций в javascript - это плохая практика, потому что это может затруднить отладку, но я сам этого не видел. Являются ли анонимные функции в JavaScript действительно плохой практикой и, если да, то почему?


Вот моя консоль браузера:

// Bad
poopy = function(){}
// function (){}
groupy = poopy;
// function (){}

// Good
droopy = function loopy(){};
// function loopy(){}
floupy = droopy;
// function loopy(){}   

Представьте, что вы что-то отлаживаете, и у вас есть имя функции с именем groupy . Вы вводите его имя, чтобы получить больше информации о нем. Если эта функция была установлена ​​как в плохом разделе, вы не представляете, каково было первоначальное объявление. Однако, если вы определите имя своей функции, как в разделе «Хорошо», то у вас всегда будет трассировка исходного имени функции.


Выражения анонимных функций - лучшая практика в JavaScript.


Определенно нет, лямбда-функции используются повсеместно, почти повсеместно.


Просто потому, что все их используют, не делает их хорошей практикой (все помнят, как использовать элемент таблицы для разметки?). Но они великолепны, потому что могут помочь прояснить и упростить ваш код, предоставляя меньше возможностей для того, чтобы что-то пошло не так

Но анонимные функции не должны быть настолько сложными, что отладка с ними затруднена. В этом случае, возможно, лучше сделать новую функцию.


Я собираюсь немного пойти против течения и привести аргумент в пользу того, что анонимные функции действительно плохая практика, хотя они широко используются.

1) Анонимные функции не могут быть повторно использованы.

2) Анонимные функции по определению не имеют имени и поэтому не описывают, что они делают. То есть код не самодокументируется.

3) Анонимные функции нельзя тестировать изолированно с модулем модульного тестирования.

4) Я лично считаю, что они затрудняют чтение и отладку кода. Хотя ваш опыт может отличаться.

Я действительно думаю, что бывают ситуации, когда анонимная функция является лучшим выбором, и, как правило, чтобы избежать вышеупомянутых недостатков, я почти всегда называю свои функции.





anonymous-function