在Lifegame文件下:
在主函数main.py下,利用game_map.py初始化地图功能、game_timerp.py的计时器功能、life_time的判断生死功能最终实现细胞随机根据生存定律计算下一代每个细胞的状态的不断进行。
一、game_map.py定义一个关于GameMap的类,其代码结构为:①__init__(self, rows, cols)函数是初始化地图;②rows(self)与cols(self) 函数对地图行列数值的获取定义行为;③reset(self, possibility=0.5)、get(self, row, col)与set(self, row, col, val) 函数对地图的坐标进行重新获取;④get_neighbor_count()、get_neighbor_count_map(self)是对地图上一点周围坐标获取与判断生死;⑤set_map()与print_map新地图的获取与打印。
二、game_timer.py定义设置地图的计时器,代码结构为:①__init__(self, trigger, interval=1.0)初始化计时器属性参数;②start(self)与stop(self)设定计时器开始及结束。
三、life_game.py实现对地图的不断更新,代码结构为:①__init__(self, map_rows=10, map_cols=10, life_init_possibility=0.5)设置地图初始值;②print_map(self)、game_cycle(self)地图的打印与更新。
四、main.py判断是否满足生命游戏运行初始条件,若符合则通过调用以上模块运行生命游戏。
代码质量可从以下几方面评价:
① 编码规范:是否遵守了编码规范,遵循了最佳实践。
② 潜在的BUG:可能在最坏情况下出现问题的代码,以及存在安全漏洞的代码。
③ 文档和注释:过少(缺少必要信息)、过多(没有信息量)、过时的文档或注释。
④ 复杂度:代码结构太复杂(如圈复杂度高),难以理解、测试和维护。
⑤ 测试覆盖率:编写单元测试,特别是针对复杂代码的测试覆盖是否足够。
例如生命游戏代码覆盖率测试,如下图所示: