Simplify Code 是一个用于减少过度工程化代码复杂度的技能,其核心理念是:最好的代码是你不必写的代码,次好的是任何人都能读懂的代码。它把复杂度视为一种成本——每一个抽象、每一层间接调用、每一种取巧模式都会增加认知负担,除非复杂度服务于明确目的,否则应当果断简化。
该技能提供了一份“简化清单”,按类别给出常见的“坏味道”及其对应的简化方式:
一是消除不必要的抽象。例如只做委托的包装类应删除包装、直接使用内部类;只创建一种类型的工厂应替换为直接构造;只有一个策略的策略模式应替换为简单函数;只有单一实现的接口应删除接口、直接使用类;只有一个子类的抽象类应合并进子类;仅承载两个值的配置对象应改用函数参数。
二是清理死代码。未使用的导入、不可达分支、被注释掉的代码、未使用的变量或函数都应删除;超过六个月的 TODO 注释应删除或转为正式问题;已上线功能的特性开关应移除开关、保留代码。
三是拉平深层嵌套。示例展示了四层嵌套的写法,通过提前返回(early return)与数组过滤(filter)改写为更扁平、更易读的结构。
四是处理参数过多的函数。示例把八个参数的函数改写为接收一个对象参数(如 CreateUserOpts)的形式。
五是避免过早优化。不足一百条数据的自定义缓存、廉价函数上的记忆化、小模块的懒加载、仅三种状态的复杂状态机,都被列为可以简化的对象,建议先移除、先测量。
技能同时给出了一个四步简化流程。第一步是识别复杂度:数嵌套层级(目标不超过三层)、数函数参数(目标不超过四个)、数每个函数的行数(目标不超过三十行)、数每个功能的抽象数量(目标不超过两个)、检查死代码(目标为零)。第二步是确认理解:明确代码实际做什么、为什么这样写、哪些测试覆盖它,简化不得破坏测试。第三步是增量简化,建议先删死代码(最安全),再用提前返回拉平嵌套,然后内联琐碎抽象、合并相关函数、简化数据结构。第四步是验证行为保持,运行 npm run test 确保已有测试仍通过,运行 npm run build 确保仍能编译。
此外,技能还说明了何时不应简化:性能关键的热路径、框架或库的硬性要求、用户明确选择的架构模式、以及已知近期需要扩展的场景。遇到疑似过度设计的模式时,应先询问,而不是直接改动。
关于安装方式、具体运行命令、支持的编程语言范围、价格与授权等信息,当前资料暂未提供。