结对编程——项目代码分析
结对编程代码分析
本文为结对编程前对对方项目代码进行学习和分析,此次队友为郭同学,通过学习其代码,进行分析如下,此文均为个人看法,不能作权威评判标准。
代码概述
由此可见这是一个拆分详尽、可复用率高的代码结构,并且是一个典型的web结构,更方便复用于后期的web项目上,通过研读代码,大致分析如下
分析
├───src
│ └───main
│ └───java
│ │ StartMath.java // 程序入口
│ ├───controller //控制器
│ │ GenerateMath.java // 题目生成控制
│ │ UserExisted.java // 已存在的用户枚举
│ ├───entity // 实体
│ │ Paper.java // 试卷实体定义
│ │ Subject.java // 题目定义
│ │ User.java // 用户定义
│ ├───service // 服务提供
│ │ │ GenerateMathService.java // 试卷生成接口
│ │ └───impl // 接口实现
│ │ GenerateFactory.java //多态的工厂函数
│ │ HighGenerateImpl.java // 高中实现
│ │ JuniorGenerateImpl.java // 初中实现
│ │ PrimaryGenerateImpl.java // 小学实现
│ └───util // 静态工具
│ GenerateUtil.java // 试题生成逻辑
│ JudgeUserUtil.java // 用户权限判断
│ OwnStorage.java // 重写储存逻辑
│ UserBind.java // ExistedUser 与 User 转换绑定
....
其中最引人注目的是service层的接口和实现、动态工厂的实现以及静态工具util的封装


优点
通过细看和分析代码,优点大致如下:
- 代码有着良好的命名风格,对定义的功能和意义一目了然,有着良好的可阅读性
- 代码有着规范的
Javadoc和缩进,可以实现轻松的导出Javadoc,对注释规范的掌握很好 - 对相同逻辑的提取和复杂逻辑的拆分做的很好,使代码的可复用性很强
- 使用了枚举、接口和类,且能使用高级的流操作+匿名函数进行操作,表明对Java基础的理解很到位
- 使用了抽象工厂方法,实现了动态多态的实现,表明对运行时多态和接口功能的充分了解
- 此项目是一个
maven项目,且熟练使用了lombok依赖,表明对项目的熟悉程度很好,更易于后期对spring boot的集成,体现高瞻远瞩
缺点
此项目虽优点众多。代码优雅,但是仍存在缺点:
- 项目的生成逻辑相对单一,未能充分实现“随机生成”
- 项目的需求未能完全实现,缺少对已生成题目的判断
- 项目主函数的逻辑控制过于复杂,且变量众多,尽管使用语义命名,但在没有注释的情况下,还是丧失了一点对于代码的可读性
总结
郭同学的项目,总的来说代码优雅,结构明确,逻辑拆分准确,使整个项目都有很好的兼容性和可复用性,使我受益匪浅。
浙公网安备 33010602011771号