湖南大学结对编程代码分析

发布于:2022-12-18 ⋅ 阅读:(483) ⋅ 点赞:(0)

作者:刘文韬

写在前面:本文将对队友冯秋怡的个人项目【中小学数学自动出题系统】代码进行分析。

一、项目结构分析

冯同学的代码采用JAVA语言,结构精简清晰、平时易懂,由"dispaly"引导页面切换并引进其他类和方法,直线思维一气呵成,使整体代码小巧灵活。同时应注意到,因为代码修掉了很多枝桠,也导致代码后续的可延展性不强。
可改进处:data中存储了题目预设好的用户信息,考虑到实际应用场景与需求,尝试将用户信息存储进数据库,实现数据与代码的分离,更加高效实用合理。
代码结构
另外,冯同学通过对user的成员分配不同的权限,增加了代码的安全性能。

二、算法与数据结构分析

1.用户数据(data)
用户数据代码
优点:将用户信息用链表存储,是合适的数据结构
可改进处:(1)账户名和密码存储在一处可能有隐私泄露风险;(2)用顺序遍历方式匹配用户名与密码并不是最优解,可以把用户信息根据id排序存储成红黑树结构,将缩短匹配时间。

2.生成试题(exam)
冯同学此部分代码并未用复杂的算法或数据结构。
个人认为可以用栈存储括号,使运算更复杂。

三、功能分析

对冯同学的代码进行了功能测试。经测试,冯同学的代码实现了项目文档要求的功能:用户登录退出;用户等级切换;指定题目数量;出题并生成文档;按正确格式生成文档。
功能测试截图
可改进处:对题目合法性可以有更细致的校验,例如被除数不能为0,根号下不能为负数等。

四、代码规范与代码风格分析

冯同学的代码风格简洁流畅,依赖、方法、函数的定义结构分明、井然有序。命名清晰明了,注释点睛之笔,让代码整体具有极高的可读性。
可改进处:根据JAVA编程规范,JAVA中的类型应采取UpperCamelCase方式编写,冯同学用的是小写;包名应全部小写;如下图方法名应改为changeType()。
在这里插入图片描述

五、总结

总体来说,冯同学的代码是可圈可点、瑕不掩瑜的。通过这次学习冯同学的代码,我看到了与我的项目思路截然不同的思路,让我对这个项目的架构有了更深层次的思考,接下来将和冯同学一起努力,完成结对作业。


网站公告

今日签到

点亮在社区的每一天
去签到