认知负荷才是最重要的
今天看到了一篇文章:《认知负荷才是最重要的》。大致是讲解了在开发过程中,市面上有许多流行的术语和最佳实践,但更重要的是关注开发人员在浏览代码时的困惑程度。高认知负荷会导致混乱,浪费时间和金钱。因为阅读和理解代码占据了大部分时间,我们需要不断审视是否在代码中引入了过多的认知负荷。
认知负荷
认知负荷指的是开发人员为了完成任务需要思考的量。过高的认知负荷会导致理解代码变得困难。因此,我们应该尽可能减少项目中的认知负荷。
新加入的开发人员的困惑程度可以反映代码的复杂性。如果新人在理解代码时连续困惑超过40分钟,那么代码就需要改进。
认知负荷的类型
- 内在性:由任务固有的难度引起,无法降低。
- 无关性:由信息呈现方式引起,可以大大减少。
实际例子
- 使用有意义的变量名称可以减少认知负荷。
- 避免嵌套的 if 语句,优先使用早期返回。
- 避免继承噩梦,优先使用组合而不是继承。
- 太多小方法、类或模块会增加认知负荷,深层模块通常比浅层模块更好。
最佳实践
- 保持代码简单,减少不必要的抽象层。
- 使用自描述的字符串而不是数字状态码,以减少认知负荷。
- 谨慎使用 DRY 原则,避免过度抽象。
- 避免与框架过度耦合,以减少新开发人员的学习负担。
- 不要为了架构而添加抽象层,遵循基本的设计原则。
领域驱动设计
- 领域驱动设计(DDD)关注问题空间而非解决方案空间。理解领域的见解并提取边界可以有效减少认知负荷。
向巨人学习
大型科技公司的设计原则包括:
- 清晰性:代码的目的和原理对读者来说很清楚。
- 简单性:代码以最简单的方式实现其目标。
- 简洁性:代码易于辨别相关细节。
- 可维护性:未来的程序员容易正确修改代码。
- 一致性:代码与更广泛的代码库一致。
结论
理解和解决问题领域的认知负荷需要勤奋和战略性的方法,优化心理能力分配非常重要。我们应该减少任何超出工作本质的认知负荷。