• 项目开发小结


    基本开发情况

    两人60天输出有效代码行15k,基本实现需求。

    经验

    1、学会使用开发工具

    在项目中使用了MyBatis框架,可以使用MyBatis Generator生成基础MyBatis代码,节省开发时间。同时合理利用IDEA插件可以提升开发效率。

    2、合理设计工程目录结构

    工程结构严格按照controller/service/dao层进行封装,保证controller层简洁性,dao层只做基本数据库操作,不使用sql进行复杂逻辑,service层写具体业务逻辑。

    1)合理的项目结构,方便后期维护,随着代码量的增加,这种优势会越来越明显,因此在代码设计初期,首先要重视工程结构;
    2)除了上面的三层结构,一般还需要构造vo/common/exception/utils等层次,用于方便开发和管理

    在common包中可以定义诸如统一响应,全局常量
    在exception中定义需要处理的业务异常,可以使用@ExceptionHandler 对异常统一处理
    utils可以定义一些工具,如时间操作、字符操作

    3、合理的数据库设计

    需要权衡表的数量与业务场景,既要考虑设计尽量少的表,方便维护,又要考虑业务场景,便于代码书写。

    1)不能一味追求表数量尽量少,这样可能导致代码处理很复杂
    2)也不能为了代码书写方便,随意增加表,这样会导致字段重复以及数据库维护的复杂性
    3)每张表都应该包括如下5个字段,软删除标识 deleted 创建人 createdBy 创建时间 createdAt 更新人 updatedBy 更新时间 updatedAt (用于排序,保证前台展示顺序),在代码中可以写一个父类包含这几个属性,其他VO可以都直接继承该父类。同时由于软删除标志deleted的存在,所有查询语句都要加上deleted = 0这个条件来过滤有效数据(0表示未删除)。

    4、代码规范性

    1)类文件使用统一前缀,便于阅读,类名、方法名、变量名遵循业界统计的命名规范即可,如驼峰命名法
    2)注释的合理性,复杂的代码逻辑需要有注释,便于后期优化;
    3)日志的合理性,要区分debug info error级别的使用场景,同时使用占位符方式打日志不要使用加号,便于提升代码性能。
    4)冗余代码清理,随着业务的复杂性增加,可能需要对原有方法进行修改甚至废弃,要及时清理无用代码以及即时修改或清理注释,错误的注释不如没有注释。
    5)合理的代码返回,在上面我们讲过要在common包可以定义统一的响应体包括 data 数据 message 消息 state 状态,同时要注意在接口返回前对所有异常进行统一处理,不要让异常抛到请求方,否则可能出现Feign调用后,解析响应异常(无法对null或不符合json格式的字符串进行反序列化,报错,导致接口调用失败)

    5、文档规范性

    1)输出了API文档,与PC端、APP端以及H5页面同步做项目时,需要以文档为准,一是方便前端人员开发,二是便于后期维护;
    2)输出了数据库文档,便于后期维护

    不足

    1、开发工具不统一

    由于本次开发是两个人合作开发,但是由于习惯性问题,一个使用IDEA,一个使用Eclipse,在开发过程中多次因为环境问题浪费开发时间

    改进措施:
    1)合作开发的所有人应该统一开发工具,避免浪费精力在调试开发环境上

    2、代码设计不充分

    时间仓促导致代码结构设计没有足够时间,代码没有充分考虑性能,同时没有输出代码设计文档。

    本次开发客观原因是开发时间较短,应该遵循开发的周期及合理性,不应该盲目追求速度,这样会给后期增加很大的维护成本。主观原因是,开发经验不足,在开发中还需要不断查询一些开发知识,导致开发效率不高。

    在开发过程中由于只追求实现业务功能,同时需求规格说明不详细,导致在代码中的异常处理不充分,很多异常场景没有统一的处理措施,没有相应的错误码,导致在调试时耗费了大量时间定位问题。

    改进措施:
    1)应该提升自身基本开发能力,同时提高沟通能力,合理地将开发中比较耗费人力的地方与业务进行沟通,达成共识。
    2)学习代码设计知识并予以实践,积累开发能力。
    3)在开发代码前与业务沟通好各种异常的错误码以及返回的错误信息,同时在代码中各种异常都需要以及error级别打印日志,便于定位问题。
    4)对已有代码进行优化,走读代码增加注释、在适当位置打日志、对异常场景进行处理

    3、数据库知识缺乏

    在设计数据库时没有充分考虑Oracle数据库的特性。

    在使用MyBatis只考虑了如使用子查询提升查询效率等基本的数据库能力,提高性能。

    但是由于数据库知识匮乏,也犯了一些低级错误,如使用了关键字当了字段名。

    改进措施:
    1)系统学习数据库知识,在设计时,避免低级错误
    2)学会数据库调优

    4、测试依赖于测试人员

    由于对整个系统没有系统的认识,在自测试期间需要造一些基础数据过于依赖测试人员。
    改进措施:
    1)提升对系统的端到端能力培养,同时输出指导文档
    2)提供测试数据自动化脚本,测试时,直接一键执行,可以完成基础数据的构造,节省时间,让开发人员能够聚焦开发的业务场景

  • 相关阅读:
    2019牛客暑期多校训练营(第二场)
    2019牛客暑期多校训练营(第一场)
    JOISC2014 挂饰("01"背包)
    UPC 2019年第二阶段我要变强个人训练赛第十六场
    UPC个人训练赛第十五场(AtCoder Grand Contest 031)
    Wannafly挑战赛15 C“出队”(约瑟夫环类问题)
    UVA 133“The Dole Queue”(循环报数处理技巧)
    洛谷P1169 [ZJOI2007]棋盘制作 悬线法 动态规划
    洛谷P1273 有线电视网 树上分组背包DP
    CF1097D Makoto and a Blackboard 质因数分解 DP
  • 原文地址:https://www.cnblogs.com/z00377750/p/10502170.html
Copyright © 2020-2023  润新知