两道随堂讨论题(陆遥)
由于工作原因,研讨时段请假,现补交作业。
讨论题一:阅读慕课中关于“生命游戏”的程序代码,尽可能完整清晰的描述代码的结构,评价一下代码的质量(从那几个角度?有哪些可以借鉴的优点?有哪些还可以改进的缺点?)
答:
一、代码结构描述
1.代码主要由mian.py、game_map.py、game_timer.py、llife_game.py四个Python文件构成。其中mian.py是主执行文件,通过调用其他三个文件中GameMap、GameTimer、LifeGame类下的函数来实现生命游戏的功能。
2.GameMap类下的函数:
(1)__init__(self, rows, cols):对地图进行初始化(行数和列数);
(2)rows(self)和cols(self):获取地图的行数和列数;
(3)reset(self, possibility=0.5): 重置地图并按possibility随机地填充一些活细胞;
(4)get(self, row, col)和set(self, row, col, val):获取细胞在地图上的具体方格,将细胞设定到地图的具体方格上;
(5)get_neighbor_count(self, row, col)和get_neighbor_count_map(self):获取一个方格周围和整个地图的活细胞数;
(6)set_map(self, new_map)和print_map(self, cell_maps=None, sep=' '):设置地图和打印地图。
3.GameTimer类下的函数:
(1)__init__(self, trigger, interval=1.0):对程序进行初始化,计时器以interval秒的频率触发trigger;
(2)start(self):启动计时器,之后将以 interval 秒的间隔持续触发;
(3)stop(self):停止计时器。
4.LifeGame类下的函数:
(1)__init__(self, map_rows=10, map_cols=10, life_init_possibility=0.5):对程序进行初始化;
(2)print_map(self):打印地图;
(3)game_cycle(self):进行一次游戏循环,并完成地图的更新。
二、代码质量评价
1.角度
(1)代码的可维护性;
(2)代码的可读性;
(3)代码的规范性;
(4)代码的运行性能;
(5)代码的单元测试;
2.优点
(1)整个程序采用模块化设计,每个类分工明确,可维护性强;
(2)代码规范性好,层次分明;
3.缺点
(1)代码的注释较少,尤其是一些函数和关键语句,降低可读性;
(2)代码缺少必要的说明文档,降低可读性;
(3)以课程为例的单元测试还不够全面,代码覆盖率不够;
(4)程序缺少UI模块,无法呈现运行过程。
讨论题二:按照分组的配对关系,两人互相通过对方的代码仓库,对对方前面两周所提交的代码进行阅读和评审,从代码质量、完成情况、代码仓库的使用三个方面提出自己的看法。
答:
本人搭档为李肖华同学,他的代码仓库地址为:https://github.com/NemoNemo03/N-Stock
1.代码质量
代码质量总体较好,主要表现在以下几个方面:
(1)代码的规范性较好,层次清晰;
(2)代码注释规范,精炼,可读性强。
需要改进的方面:可以用更高级的字符串匹配算法来提升性能,也可以考虑加入三方库的使用。

2.完成情况
李肖华同学完成了单词检索程代码编写,生命游戏单元测试,单词检索单元测试,但是遗漏了计算器的代码。在LIFE_GAME文件夹下只有单元测试程序,今后类似情况,应该也将被测试的源程序也添加到文件夹里,以方便搭档查看。

3.代码仓库的使用
很好的发挥了代码仓库的优势,有上传记录,也有具体的commit,方便了搭档对编程进度和代码改动的了解。


浙公网安备 33010602011771号