软件工程(2019)结对编程第二次作业——小学四则运算自动生成
1.题目要求
能够自动生成四则运算练习题
可以定制题目数量
用户可以选择运算符
用户设置最大数(如十以内、百以内等)
用户选择是否有括号、是否有小数
用户选择输出方式(如输出到文件、打印机等)
最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主)
2.角色分配及代码
结对小伙伴——张浩宇
在此次项目中,我担任“领航员”的角色,张浩宇担任“驾驶员”的角色。
此次项目的作业已上传至Coding.net中
3.测试分析
可视化界面的一些测试,这个测试直接展示结果即可。
(1)容错处理测试(包括最大值、题目数、运算符的选择、文件的生成)
(2)正常测试(包括最大值、题目数是否正确,打印是否正常以及能否导出文件)
由于功能函数都为随机数的生成,无法进行测试。
4.代码审查表
C#代码审查表 | ||||||||
审查人 | 王宗波 | 审查日期 | 2019.5.4 | |||||
代码名称 | Auto_Setting_Questions | 代码作者 | 张浩宇 | |||||
重要性 | 审查项 | 结论 | ||||||
命名 | ||||||||
重要 | 是否采用Pascal Casing + Camel Casing规范? | 是 | ||||||
重要 | 布尔型属性名称前缀是否具有二值性?(如:has/can/is/enable等) | 否 | ||||||
注释 | ||||||||
注释是否较清晰且必要? | 是 | |||||||
重要 | 复杂的分支流程是否已经被注释? | 是 | ||||||
距离较远的}是否已经被注释? | 是 | |||||||
重要 | 方法、属性、事件是否已经有文档注释?(功能、输入、返回及其他可选) | 是 | ||||||
特殊用法是否被注释? | 否 | |||||||
声明、空白、缩进 | ||||||||
每行是否只声明了一个变量?(特别是那些可能出错的类型) | 是 | |||||||
重要 | 类属性是否都执行了初始化? | 是 | ||||||
代码段落是否被合适地以空行分隔? | 是 | |||||||
是否合理地使用了空格使程序更清晰? | 是 | |||||||
语句/功能分布 | ||||||||
包含复合语句的{}是否成对出现并符合规范? | 是 | |||||||
是否给单个的循环、条件语句也加了{}? | 是 | |||||||
if/if-else/if-else if-else/do-while/switch-case语句的格式是否符合规范? | 是 | |||||||
单个变量是否只做单个用途? | 是 | |||||||
单行是否只有单个功能?(不要使用;进行多行合并) | 否 | |||||||
重要 | 单个方法是否执行了单个功能并与其命名相符? | 是 | ||||||
操作符++和— —操作符的应用是否复合规范? | 是 | |||||||
规模 | ||||||||
重要 | 单个方法是否不超过100行? | 否 | ||||||
单个方法内超过10行以上执行单一功能的代码块是否使用#region分块? | 是 | |||||||
重要 | 判断和循环的缩进层数是否不超过3层? | 是 | ||||||
可靠性(总则/变量和语句) | ||||||||
重要 | IO、网络连接、GDI等资源是否采用Using块管理Dispose? | 是 | ||||||
重要 | 对数组的访问是否是安全的?(合法的index取值为[0, MAX_SIZE-1])。 | 是 | ||||||
程序中是否只使用了简单的表达式? | 否 | |||||||
重要 | 是否已经用()使操作符优先级明确化? | 是 | ||||||
重要 | 是否每个if-else if-else语句都有最后一个else以确保处理了全集? | 是 | ||||||
重要 | 是否每个switch-case语句都有最后一个default以确保处理了全集? | 是 | ||||||
for循环是否都使用了包含下限不包含上限的形式?(k=0; k<MAX) | 是 | |||||||
重要 | XML标记书写是否完整,字符串的拼写是否正确? | 是 | ||||||
对于流操作代码的异常捕获是否有finally操作以关闭流对象? | 是 | |||||||
重要 | 是否使用Single.Equals()判断浮点数值是否相等? | 否 | ||||||
重要 | 是否使用String.IsNullOrEmpty()判断字符串是否为空? | 否 | ||||||
可靠性(方法) | ||||||||
重要 | 是否确认在对Map对象使用迭代遍历过程中没有做增减元素操作? | 是 | ||||||
重要 | 线程处理方法循环内部是否有异常捕获处理,防止线程抛出异常而退出? | 否 | ||||||
原子操作代码异常中断,使用的相关外部变量是否恢复先前状态? | 否 | |||||||
可维护性 | ||||||||
重要 | 实现代码中是否消除了直接常量?(用于计数起点的简单常数例外) | 是 | ||||||
是否消除了导致结构模糊的连续赋值?(如a= (b=d+c )) | 否 | |||||||
是否有冗余判断语句?(如:if (b) return true; else return false;) | 是 | |||||||
是否把方法中的重复代码抽象成私有方法? | 否 | |||||||
安全性 | ||||||||
是否去除了用户字符串输入中多余的空格? | 是 | |||||||
重要 | 是否对用户输入数据进行了必要的合法性验证? | 是 | ||||||
重要 | 如不得不去除了.NET页面验证功能,是否采用了必要的预防措施? | 是 | ||||||
重要 | 对限制字符数的节选性内容调用,是否对Html标签不配套的情况采取了预防措施? | 是 | ||||||
重要 | SQL查询是否优先采用存储过程? | 否 | ||||||
重要 | 连接字符串是否保存在.config文件中? | 否 | ||||||
重要 | 是否有可能引起死锁或死循环的可能? | 是 | ||||||
是否有长时间占用有限资源的情况? | 是 | |||||||