核心问题
如何从需求里切出正确概念?
工程困境
在线课程平台有:注册用户、买课的人、学习者、讲师、企业员工、管理员。
坏模型:
type User = { role: string; courseIds: string[]; companyId?: string }
思想模型
先找事实、关系、状态,再命名实体。
好模型
Account -> 登录主体
Credential -> 登录凭证
Purchase -> 购买事实
Enrollment -> 学习关系
InstructorProfile -> 讲师资料
OrganizationMembership -> 企业成员关系
CourseAccessGrant -> 访问权效果
Atlas Action
拿一个需求,按三列整理:
日常词 -> 背后的事实 -> 代码概念
学生 -> 报名某门课 -> Enrollment
客户 -> 有支付事实 -> Purchase / Subscription
员工 -> 属于组织 -> OrganizationMembership
小结
建模不是把名词搬进代码,而是找出让名词成立的事实。