Kai's personal website build with astro.

日常思考记录


记录日常思考,后面有可能再整理扩充成文章。

代码设计

传统mvc 上层 controller 控制业务流程 状态转移 程序员手搓业务 系统能力有限
面向对象 对象自治 抽象模块 提供简单易用的入口 学会使用工具 系统灵活性增强
微服务   服务自治 系统解耦 互相合作 突破单服务能力上限 但服务之间关系不明确 会增加系统内部复杂度
领域驱动 领域自治 收拢控领域服务 对外屏蔽聚合/实体 显化服务边界 强制职责分离 系统能力突破上线 设计难度大增

终极自治 递归自治 洋葱型/金字塔型

编写复杂表结构业务代码的方法论

复杂的表现
在设计层面 为了职责分离、结构清晰、满足数据库范式等考虑 造成表结构嵌套 呈树状/网状
在展示层面 面向用户时 为了信息的聚合 减少页面的层级 减少操作的步骤 需要查询多张表

复杂的成本
基于数据的分布关系 需要进行多次查询 经历多次网络/磁盘的 IO 操作
返回结构复杂 对象嵌套 或关系不明 字段

面向用户的展示、操作层 数据扁平化 善用浮窗、折叠

数据的 in/out 在 99% 的场景下 要经过后端转化再入库/响应
善用 dto do 以及 assmebler 的设计
做好数据的把控 减少数据异常 === 减少代码异常