明确:
为什么要做这个东西,它的价值在哪里(意义)
这个东西要实现什么功能,它面向的用户是谁(目标用户群体)
它的功能后续可以有什么发展(长远性,功能扩展)
前期需求的澄清和沟通比后期的开发还重要,你做的是不是对方想要的,同时最好能跟一手需求方有直接沟通
测试,防止测试不完全,以使用人的角度进行思考,以一手需求人的数据进行操作,实现100%的模拟
与需求方澄清需求
确定架构
设计文档
核心流程、生命状态流转
接口设计,与前端确认
数据库设计(主键、索引、字段类型大小,必带字段 creatBy、creatTime、modifyBy、modifyTime、deleted)
开发:
本机创建mysql数据库表,确保字段无误
根据数据库表创建entity类,包括entity的struct、tableName
根据entity,创建dto类,包括dto的struct、dto转entity的方法、Req,对应前端接req——后端dto——entity过程
确定前端调用url,写对应router
确定接口,写controller接口,确定参数和返回内容
生成swagger文档,与前端对接,保证前端可以按照swagger文档开始开发
开始controller——app service——service——repo层的实际逻辑开发
方法名:
PageListXxxx
ListXxxx / ListXxxxByXxx
AddXxxx
DeleteXxxx
GetXxxx
UpdateXxx
枚举和常量:
全局常量和枚举,放在 infra->constant/enums
下面
具体域内的常量和枚举放到domain->constant/enums
下面
1、会变化的配置,尽量写在配置文件中,防止每次发生变更要重新发版,增加便利性
2、什么时候需要异步处理,批量上传的时候考虑,此时网络会有实现限制
3、对唯一性有要求的参数进行设置时考虑多人操作的情况,是否会导致重复
4、容错处理考虑,参数校验,你永远不知道别人会出现什么骚操作。这就需要在实现基本功能的同时去扩展思考会出现哪些问题
5、不同逻辑代码块之间用空行隔开
6、数据delete字段,不做物理删除,所以相应的查询时也需要带上条件 delete=0
接口文档API + demo例子
当遇到相关的需求,但是不知道有哪个对应的方法,并且google baidu 搜不到的情况,建议直接查看接口API文档,没准就能找到你不知道但刚好能满足需求的方法,毕竟代码的核心不是重复造轮子,当你觉得繁琐时,就是优化的时机,并且这个时机很大可能别人已经优化了