Чем больше я вникаю в javascript, тем больше я думаю о последствиях определенных дизайнерских решений и поощрял практику. В этом случае я наблюдаю анонимные функции, функции, которые не только снабжены JavaScript, но я вижу сильно используемую.
Я думаю, мы все можем согласиться на следующие факты:
- человеческий разум не имеет дело с более чем 7 плюс минус две сущности (Закон Миллера)
- глубокий отступ считается плохая практика программирования и обычно указывает на проблемы с дизайном, если вы отступали более чем на три или четыре уровня. Это распространяется на вложенные объекты, и это хорошо представлено в записи Zen python "Плоский лучше, чем вложенный".
- Идея иметь имя функции как для справки, так и для облегчения документирования выполняемой задачи. Мы знаем или можем ожидать, что делает функция removeListEntry(). Самодокументирующийся, понятный код важен для отладки и удобочитаемости.
В то время как анонимные функции являются очень приятной функцией, ее использование приводит к глубоко вложенному дизайну кода. Код быстро записывается, но его трудно читать. Вместо того, чтобы вынуждать изобретать именованный контекст для функциональности и сглаживать иерархию вызываемых объектов, он поощряет "углубляться на один уровень", подталкивая ваш мозговой стек и быстро переполняя правило 7 +/- 2. Подобная концепция выражена в Алане Купере " О Face", цитируя свободно "люди не понимают иерархии". Как программисты мы понимаем иерархии, но наша биология все еще ограничивает наше понимание глубокого гнездования.
Я хотел бы услышать вас по этому поводу. Если анонимные функции считаются вредными, кажущийся блестящий синтаксический сахар, который мы обнаружим позже, чтобы быть солью или даже крысиным ядом?
CW, поскольку нет правильного ответа.