核心问题
这个概念真的需要存在吗?
工程困境
你可能只需要三个权限规则:
课程作者可以编辑课程。
平台管理员可以下架课程。
企业管理员可以分配课程。
但代码里出现了:
abstract class BaseUserRolePermissionResolver<TContext, TResult> {
abstract resolve(context: TContext): TResult
}
它看起来专业,却可能只是过早焦虑的实体化。
思想模型
奥卡姆剃刀说:
如无必要,勿增实体。
工程翻译:
如无必要,勿增概念。
KISS 不是少写代码,而是少创造没有必要存在的概念。
好判断
新增一个实体前问:
它是否有独立生命周期?
它是否有自己的不变量?
如果删除它,当前需求是否无法表达?
它解决的是已经出现的复杂性,还是想象中的未来复杂性?
Atlas 警告
过度设计最危险的地方,是它看起来像高级工程。
Atlas Action
找代码里的 Base、Generic、Universal、Resolver。逐个问:它降低了理解成本,还是增加了一套新语言?
小结
简单不是空旷,简单是没有多余。