日常思考记录
记录日常思考,后面有可能再整理扩充成文章。
代码设计
传统mvc 上层 controller 控制业务流程 状态转移 程序员手搓业务 系统能力有限
面向对象 对象自治 抽象模块 提供简单易用的入口 学会使用工具 系统灵活性增强
微服务 服务自治 系统解耦 互相合作 突破单服务能力上限 但服务之间关系不明确 会增加系统内部复杂度
领域驱动 领域自治 收拢控领域服务 对外屏蔽聚合/实体 显化服务边界 强制职责分离 系统能力突破上线 设计难度大增
终极自治 递归自治 洋葱型/金字塔型
编写复杂表结构业务代码的方法论
复杂的表现
在设计层面 为了职责分离、结构清晰、满足数据库范式等考虑 造成表结构嵌套 呈树状/网状
在展示层面 面向用户时 为了信息的聚合 减少页面的层级 减少操作的步骤 需要查询多张表
复杂的成本
基于数据的分布关系 需要进行多次查询 经历多次网络/磁盘的 IO 操作
返回结构复杂 对象嵌套 或关系不明 字段
面向用户的展示、操作层 数据扁平化 善用浮窗、折叠
数据的 in/out 在 99% 的场景下 要经过后端转化再入库/响应
善用 dto do 以及 assmebler 的设计
做好数据的把控 减少数据异常 === 减少代码异常