Title: cognitive-load/README.zh-cn.md at main · zakirullin/cognitive-load
URL Source: https://github.com/zakirullin/cognitive-load/blob/main/README.zh-cn.md
简介(Introduction)
这世上有如此多的“流行语”和“最佳实践”,但是让我们把注意力转向更基础的方面。即——开发人员在浏览代码时所感受到的“困惑程度”。
困惑是以时间和金钱为代价的。困惑是由高_认知负荷_造成的。这不是什么花哨的抽象概念,而是一种人类的基本限制因素。
由于我们花在阅读和理解代码上的时间远远多于编写代码的时间,所以我们应该不断地问自己,我们是否在代码中嵌入了过多会给人带来认知负荷的内容。
“认知负荷”(Cognitive load)指的是开发人员为了完成一项任务而需要进行思考的量。
在阅读代码时,人们会将诸如变量值、控制流逻辑和调用序列等内容记在脑海里。通常情况下,一般人在工作记忆中大约可以保存四个这样的部分。一旦达到这个临界值,理解事物就变得更加困难。
假设我们被要求对一个完全不熟悉的项目进行修复工作。并被告知在此之前,有一位非常聪明的开发人员在项目中编写了代码。采用了许多复杂高级的架构、花哨的库和先进的技术。换句话说,项目的前任开发者给我们带来了很高的认知负荷。
我们应该尽可能地减少项目中会给人带来认知负荷的内容。
认知负荷的类型(Types of cognitive load)
内在的 - 源于任务本身所固有的难度。它是软件开发的核心要素,且这种难度无法降低。
与任务无关的 - 由信息的呈现方式导致。通常由与任务并无直接关联的因素引发,比如那些聪明人的 “骚操作”。并且这种类型的认知负荷是可以避免的。我们将在下文着重关注这一类型的认知负荷。
接下来让我们直接看一些“与任务无关的”认知负荷的具体实例。
我们将认知负荷的“困惑程度”定义如下: