核心问题

这个概念真的需要存在吗?

工程困境

你可能只需要三个权限规则:

课程作者可以编辑课程。
平台管理员可以下架课程。
企业管理员可以分配课程。

但代码里出现了:

abstract class BaseUserRolePermissionResolver<TContext, TResult> {
  abstract resolve(context: TContext): TResult
}

它看起来专业,却可能只是过早焦虑的实体化。

思想模型

奥卡姆剃刀说:

如无必要,勿增实体。

工程翻译:

如无必要,勿增概念。

KISS 不是少写代码,而是少创造没有必要存在的概念。

好判断

新增一个实体前问:

它是否有独立生命周期?
它是否有自己的不变量?
如果删除它,当前需求是否无法表达?
它解决的是已经出现的复杂性,还是想象中的未来复杂性?

Atlas 警告

过度设计最危险的地方,是它看起来像高级工程。

Atlas Action

找代码里的 BaseGenericUniversalResolver。逐个问:它降低了理解成本,还是增加了一套新语言?

小结

简单不是空旷,简单是没有多余。