用途:这是一条编码规范,要求每段代码只做一件事,把数据获取、业务逻辑与展示分离。当组件同时获取、转换并显示数据,业务逻辑混入 UI,控制器里写数据库查询,或代码难以单独测试时使用。
主要能力:给出混合关注点的识别信号与重构模式。检测信号包括:一个文件同时做 fetch + transform + display;useEffect 中同时 fetch、转换并 setState;渲染函数里写业务逻辑;路由处理器里写数据库查询;工具函数里发 API 调用;组件超过 100 行。
分层方式:数据层(Hooks、Services)负责取数与状态管理,不含业务逻辑;逻辑层(纯函数)负责转换、计算、校验与业务规则;展示层(组件)只负责渲染、样式与交互,不取数;组合层(容器组件)连接各层并处理 loading/error 状态。示例中把 useUser、formatUser、UserCard 与 UserProfile 拆开,使格式化可单独测试、取数逻辑可复用、UI 可配任意数据。
使用方式:按上述四层拆分代码,遇到“组件很小”“这样更简单”“只用一次”“能跑就行”等理由时仍坚持分离。
限制:资料未提供安装命令、依赖、平台或收费信息;该规范为原则性指导,具体实现需结合项目技术栈。