两人60天输出有效代码行15k,基本实现需求。前端
在项目中使用了MyBatis框架,可使用MyBatis Generator生成基础MyBatis代码,节省开发时间。同时合理利用IDEA插件能够提高开发效率。sql
工程结构严格按照controller/service/dao层进行封装,保证controller层简洁性,dao层只作基本数据库操做,不使用sql进行复杂逻辑,service层写具体业务逻辑。数据库
1)合理的项目结构,方便后期维护,随着代码量的增长,这种优点会愈来愈明显,所以在代码设计初期,首先要重视工程结构;
2)除了上面的三层结构,通常还须要构造vo/common/exception/utils等层次,用于方便开发和管理json
在common包中能够定义诸如统一响应,全局常量
在exception中定义须要处理的业务异常,可使用@ExceptionHandler 对异常统一处理
utils能够定义一些工具,如时间操做、字符操做框架
须要权衡表的数量与业务场景,既要考虑设计尽可能少的表,方便维护,又要考虑业务场景,便于代码书写。数据库设计
1)不能一味追求表数量尽可能少,这样可能致使代码处理很复杂
2)也不能为了代码书写方便,随意增长表,这样会致使字段重复以及数据库维护的复杂性
3)每张表都应该包括以下5个字段,软删除标识 deleted 建立人 createdBy 建立时间 createdAt 更新人 updatedBy 更新时间 updatedAt (用于排序,保证前台展现顺序),在代码中能够写一个父类包含这几个属性,其余VO能够都直接继承该父类。同时因为软删除标志deleted的存在,全部查询语句都要加上deleted = 0这个条件来过滤有效数据(0表示未删除)。工具
1)类文件使用统一前缀,便于阅读,类名、方法名、变量名遵循业界统计的命名规范便可,如驼峰命名法
2)注释的合理性,复杂的代码逻辑须要有注释,便于后期优化;
3)日志的合理性,要区分debug info error级别的使用场景,同时使用占位符方式打日志不要使用加号,便于提高代码性能。
4)冗余代码清理,随着业务的复杂性增长,可能须要对原有方法进行修改甚至废弃,要及时清理无用代码以及即时修改或清理注释,错误的注释不如没有注释。
5)合理的代码返回,在上面咱们讲过要在common包能够定义统一的响应体包括 data 数据 message 消息 state 状态,同时要注意在接口返回前对全部异常进行统一处理,不要让异常抛到请求方,不然可能出现Feign调用后,解析响应异常(没法对null或不符合json格式的字符串进行反序列化,报错,致使接口调用失败)性能
1)输出了API文档,与PC端、APP端以及H5页面同步作项目时,须要以文档为准,一是方便前端人员开发,二是便于后期维护;
2)输出了数据库文档,便于后期维护学习
因为本次开发是两我的合做开发,可是因为习惯性问题,一个使用IDEA,一个使用Eclipse,在开发过程当中屡次由于环境问题浪费开发时间开发工具
改进措施:
1)合做开发的全部人应该统一开发工具,避免浪费精力在调试开发环境上
时间仓促致使代码结构设计没有足够时间,代码没有充分考虑性能,同时没有输出代码设计文档。
本次开发客观缘由是开发时间较短,应该遵循开发的周期及合理性,不该该盲目追求速度,这样会给后期增长很大的维护成本。主观缘由是,开发经验不足,在开发中还须要不断查询一些开发知识,致使开发效率不高。
在开发过程当中因为只追求实现业务功能,同时需求规格说明不详细,致使在代码中的异常处理不充分,不少异常场景没有统一的处理措施,没有相应的错误码,致使在调试时耗费了大量时间定位问题。
改进措施:
1)应该提高自身基本开发能力,同时提升沟通能力,合理地将开发中比较耗费人力的地方与业务进行沟通,达成共识。
2)学习代码设计知识并予以实践,积累开发能力。
3)在开发代码前与业务沟通好各类异常的错误码以及返回的错误信息,同时在代码中各类异常都须要以及error级别打印日志,便于定位问题。
4)对已有代码进行优化,走读代码增长注释、在适当位置打日志、对异常场景进行处理
在设计数据库时没有充分考虑Oracle数据库的特性。
在使用MyBatis只考虑了如使用子查询提高查询效率等基本的数据库能力,提升性能。
可是因为数据库知识匮乏,也犯了一些低级错误,如使用了关键字当了字段名。
改进措施:
1)系统学习数据库知识,在设计时,避免低级错误
2)学会数据库调优
因为对整个系统没有系统的认识,在自测试期间须要造一些基础数据过于依赖测试人员。
改进措施: 1)提高对系统的端到端能力培养,同时输出指导文档 2)提供测试数据自动化脚本,测试时,直接一键执行,能够完成基础数据的构造,节省时间,让开发人员可以聚焦开发的业务场景