读小伙伴的代码,第一感觉是:哇,牛叉!仔细一看,第二感觉是:emmmm,有点儿懵!
本人用的是Java,小伙伴用的是C++。
在仔细研读了对方的代码后,下面写一写我略为粗浅的一点总结吧!
小伙伴C++基础比较扎实,她的代码给人的第一感觉是很有条理,逻辑划分清晰,代码也比较简洁,总之优点还是bulingbuling~~~
优点见下:
从上图大致可以看出:源码分为了三部分。MathExam.h主要负责生成小学、初中和高中的题目,各种不同类型的难度加持。User.h主要是先用了一个Vector容器作为存储用户信息的数据库,然后判断输入的用户信息是否与数据库中的用户信息吻合,即是否合法。还有负责判断对应的账号类型和该账号当前选择的模式,修改当前模式以及生成试卷等。main.cpp主要负责把用户信息添加到数据库中,按照项目规定的流程输出提示信息,以及调用各种函数来支持操作等等。
1、总体来说逻辑分工清晰,很值得本人学习,小伙伴棒棒哒~~~
2、代码很规范。截张图自行感受一下。
每个函数之间都空一行,缩进,括号等等都很合理,很清晰,这个真的值得我们学习,让看代码的人不至于那么痛苦,真的很好~~~
3、封装性很好。分别写了User类、UserDate类、MathExam类等把各种不同功能的函数放在指定的类中,这样以后的可移植性和可维护性会更好的!
优点很多,一些小缺陷自然也是存在的!
项目最终的实现方面有点儿小问题:
1、说所有式子只有一个括号或没有括号,我个人的理解是题目中的括号可以不止一个。
2、小学题目中出现了“30=”这种单个操作数的情况。
这些都是小问题,稍作修改就能解决!
从对方的代码中,我也看出了我代码实现方面的一些不足之处:
1、高中题目中只有操作数和带sin、cos、tan的操作数两种,小伙伴还包含了根号、平方等,这个挺好的,高中题目应该也可以带初中的类型!
2、生成题目方面,对方是一种类型的学校生成一个TXT文件,而我本人是一次登录生成一个TXT文件,这点感觉对方的更好一些,更清晰!
读完了对方的代码,大致意思是了解了,但对于某些语句的使用还存在着一知半解的感觉,后续还要细细请教一下。对方的代码中也有很多值得我借鉴和学习的地方。比如存储用户的信息,我之前为了图方便,用的是一个二维数组,感觉不是很好。但小伙伴用的是一个容器,这也给了我启发,Java中也可以用容器存取一些信息,扩展性更好。还有代码的规范性和简洁程度等等。总之,读别人的代码,尽管过程可能会有些痛苦,但受益良多!
最后,老铁(@小伙伴),你这个是不是对data和date有什么误会啊,这个让我看main函数看了半天没有领会你的意思。
UserData更好一些吧~~~