结对编程-队友代码分析

优点:

1.命名规范:

变量严格按照“代码命名规范文档”命名,易懂,且变量注释写的比较详细;

代码截图:

2.处理问题细致:

(1)题目前面的标号进行了细节化:

运行结果:

(2)高中问题中考虑了tan90不存在的情况,并避免了这种情况;

(如果出现这种情况,退回到上一次的for循环,重写题目,这个是自己没有考虑到的)

代码截图:

3.增加了需求

需求文档中并没有明确表示根据账户生成相应的文件夹,但是这里实现了,能避免不必要的空间浪费;结合实际情况,在只有一个用户使用这个程序的情况下,用户不需要去找自己账号所对应的文件夹,提高了用户体验;

我自己因为懒,虽然考虑到了,但是没有去查,没有实现。

代码截图:

4.代码量浓缩,没有功能重复性的代码,总程序只有300多行,不像我,搞了600多行,依然有很多重复性的内容。。。

缺点:

1.代码浓缩的坏处:

很多功能堆在一个函数里,不利于解读和维护,函数SetProblem()内代码较多,占所有程序的一半还多,实现过程注释不够,逻辑架构分不开,导致阅读起来有些困难;

2.bug:

(1)需求中操作数的个数和范围与需求不符;小学题目中出现了只有一个操作数的情况,而且操作数出现了0和0.5;

如图:

操作数的取值范围1~100可以通过一个do...while循环实现;

在阅读了代码之后,发现出现0.5是因为开方的时候把'^'当成符号处理,而0.5当成数字处理,而在for循环中用了同一个变量表示操作数和指数(包括2和0.5)导致操作数里也包含了0.5;

(2)初中和高中的题目中需求没有完全实现,有的题目中不包含平方或开方(三角函数)中的一个,只有一个操作数;

3.程序中使用的goto语句较多,虽然是在比较简单的模块,但是结构化程序设计中不建议使用goto语句,容易造成程序流程的混乱,使理解和调试程序产生混乱。

总结:

 通过分析别人的代码,能对照自己代码的不足,找出他人代码bug的同时也能反思自己代码的不足之处,是很好的学习方法;在做个人项目过程中,有些模块,其实自己没有思路,实在想不出来会去网上查别人相似的代码,然后再写,但是,感觉这位大佬的代码似乎纯个人思路啊,而且还增加了一部分需求,佩服,感觉如果时间再多一些能实现的更好。

原文地址:https://www.cnblogs.com/wujingxuan/p/9711360.html