纲要
完整的系统流程包括:
- 前期的需求沟通分析
- 中期的代码设计实现
- 后期的系统上线维护
需求分析
做为技术人员不仅仅是等着产品设计文档,线框图,照着实现就可以。应该参与到产品设计中。具有产品思维,前期应该去市场上调研,参考,借鉴已成熟的产品。充分了解自己公司的产品后,然后再将其糅合到自己的产品中,并做适当的微创新。
- 调研产品
- 充分了解自家产品
- 微创新
tip: 技术人也要有一些产品思维
系统设计
- 合理地将功能划分到不同模块
合理地划分代码可以实现代码的高内聚,低耦合,类与类之间的交互简单清晰,代码整体结构一目了然。
设计模块与模块之间的交互关系
- 同步接口调用
- 适合上下层之间的关系
- 异步接口调用
- 适合同级间的关系
- 同步接口调用
设计模块的接口,数据库,业务模型
代码实现
前提
数据库和接口设计非常重要,一旦设计好并投入使用之后,这两部门都不能轻易改动。
- 改动数据库表结构,需要涉及数据的迁移和适配。
- 改动接口,需要推动接口的使用都作相应的代码修改。
一定要多花点心思和时间,切不可过于随意。
业务逻辑代码侧重内部实现,不涉及外部依赖的接口,也不包括持久化的数据,所以对改动的容忍性更大。
MVC
- Controller 层负责接口暴露
- Repository 层负责数据读写
- Service 层负责核心业务逻辑
两种开发模式
- 充血 DDD 开发模式
- 贫血 OOP 开发模式
为什么使用MVC开发
- 分层能起到代码复用的作用
- 同一个 Repository 可能会被多个 Service 来调用。
- 同一个 Service 可能会被多个 Controller 调用。
- 分层能起到隔离变化的作用
- Repository 层封装了对数据库访问的操作,提供了抽象的数据访问接口。
- 基于接口而非实现编程的设计思想,Service 层使用 Repository 层提供的接口,并不关心底层依赖是哪种具体的数据库。
- 如果需要替换不同的数据库,只需要修改 Repository 层,Service 层的代码完全不需要修改。
- 三层的稳定程序也不同。越底层越应该稳定。
- 分层能起到隔离关注点的作用
- Repository 层只关注数据的读写。
- Service 层只关注业务逻辑,不关注数据的来源。
- Controller 层只关注与外界打交道,数据校验,封装,格式转换,并不关心业务逻辑。
- 三层之间的关注点不同,分层之后,职责分明,更加符合单一职责原则,代码的内聚性更好。
- 分层能提高代码可测试性
- 使用依赖注入方式,采用 mock 数据替代真实数据。
- 分层能应对系统的复杂性
- 水平方向基于业务来做拆分,就是模块化。
- 垂直方向基于流程来做拆分,就是分层。
tip: 对于工作不满意,应该我花点时间在技术上;对于当前工作很满意则多花时间在业务上。
关于我
我的博客:https://yezihack.github.io
欢迎关注我的微信公众号【空树之空】,共同学习,一起进步~