我对 javascript 的深入研究越多,我就越会考虑某些设计决策和鼓励实践的后果。在这种情况下,我正在观察匿名函数,这个特性不仅是 JavaScript 提供的,而且我看到它被广泛使用。
我想我们都可以同意以下事实:
- 人类的大脑不会处理超过 7 加减两个实体(米勒定律)
- 深缩进被认为是不好的编程习惯,如果缩进超过三个或四个级别,通常会指出设计问题。这扩展到嵌套实体,它在 python Zen 条目“Flat is better than nested”中得到了很好的呈现。
- 有一个函数名的想法既是为了参考,也是为了便于记录它所执行的任务。我们知道或者可以期待一个名为 removeListEntry() 的函数的作用。自记录、清晰的代码对于调试和可读性很重要。
虽然匿名函数似乎是一个非常好的特性,但它的使用导致了深度嵌套的代码设计。代码写得很快,但读起来很困难。与其被迫为功能发明一个命名上下文,并扁平化你的可调用对象层次结构,它鼓励“深入一层”,推动你的大脑堆栈并迅速溢出 7 +/- 2 规则。Alan Cooper 的“ About Face ”中表达了类似的概念,粗略地引用了“人们不了解等级制度”。作为程序员,我们确实了解层次结构,但我们的生物学仍然限制了我们对深层嵌套的理解。
在这一点上,我想听听你的意见。匿名函数是否应该被认为是有害的,一种明显闪亮的语法糖,我们后来发现它是盐,甚至是老鼠药?
CW,因为没有正确的答案。