博客信息 | 沈阳航空航天大学计算机学院2020软件工程作业 |
---|---|
作业要求 | https://edu.cnblogs.com/campus/sau/Computer1701-1705/homework/10583 |
课程目标 | 熟悉一个“高质量”软件的开发过程 |
作业目标 | 熟悉代码规范及结对互审 |
一:复审代码题目
输入文件中含有待格式的文本,它由多行的字符组成,例如一个源代码。每一行由一系列被一个或多个空格符所隔开的字符组成,任何完整的字都没有被分割在两行(每行最后一个字与下一行的第一个字之间在逻辑上应该由空格分开),每行字符数不超过80,如果超过80则折行处理。除了上述文本类字符之外,如果字符为大括号,则单独占一行。同时每行应缩进4个空格。
一个文件格式化程序可以处理上述输入文件,并对文件进行相应的格式化,格式化结果存入输出文本文件中。在这个题目中,我们需要计算每行输出字符个数,从而实现一行超过80个字符折行处理的功能,还需要对字符进行识别,如果读取字符为大括号则应输出换行,再输出大括号,再输出换行,这样可以达到大括号独占一行的要求。此外每次换行都要在行首输出4个空格,这样实现了每行缩进4个单位的要求。每输出一个字符到屏幕上都要将这个字符写入到文件中,从而实现将格式化的文本输出到文件中的功能。
二:结对伙伴代码地址
代码代码
三:C++代码审查
审查人 | 邓好 | 被审查人 | 李德龙 |
---|---|---|---|
序号 | 重要性 | 审查项 | 结论 |
1 | 不重要 | 头文件和定义文件的名称是否合理? | 是 |
2 | 不重要 | 头文件和定义文件的目录结构是否合理? | 是 |
3 | 不重要 | 版权和版本声明是否完整? | 是 |
4 | 重要 | 头文件是否使用了 ifndef/define/endif 预处理块? | 否 |
5 | 不重要 | 头文件中是否只存放“声明”而不存放“定义” | 否 |
6 | 不重要 | 空行是否得体? | 是 |
7 | 不重要 | 代码行内的空格是否得体? | 是 |
8 | 不重要 | 长行拆分是否得体? | 是 |
9 | 不重要 | “{” 和 “}” 是否各占一行并且对齐于同一列? | 是 |
10 | 重要 | 一行代码是否只做一件事? | 是 |
11 | 重要 | If等不论执行语句多少都要加 “{}”。 | 是 |
12 | 重要 | 注释是否清晰并且必要? | 否 |
13 | 重要 | 注释是否有错误或者可能导致误解? | 否 |
14 | 重要 | 类结构顺序是否在所有的程序中保持一致? | 无 |
15 | 重要 | 命名规则是否与所采用的操作系统或开发工具的风格保持一致? | 是 |
16 | 不重要 | 标识符是否直观且可以拼读? | 否 |
17 | 不重要 | 标识符的长度应当符合“min-length && max-information”原则? | 无 |
18 | 重要 | 程序中是否出现相同的局部变量和全部变量? | 是 |
19 | 不重要 | 类名、函数名、变量和参数的书写格式是否遵循一定的规则? | 是 |
20 | 不重要 | 静态变量、全局变量、类的成员变量是否加前缀? | 是 |
21 | 重要 | 是否已经用括号清楚地确定表达式的操作顺序? | 是 |
22 | 不重要 | 是否编写太复杂或者多用途的复合表达式? | 否 |
23 | 重要 | 是否将复合表达式与“真正的数学表达式”混淆? | 否 |
24 | 重要 | 如果某一常量与其它常量密切相关,是否在定义中包含了这种关系? | 是 |
25 | 不重要 | 生存期内是常量,而对于整个类而言却是可变的。 | 无 |
26 | 不重要 | 在C++ 程序中,是否用const常量取代宏常量? | 无 |
27 | 重要 | return语句是否返回指向“栈内存”的“指针”或者“引用”? | 否 |
28 | 不重要 | 是否省略了函数返回值的类型? | 否 |
29 | 不重要 | 参数命名、顺序是否合理? | 是 |
30 | 不重要 | 参数的个数是否太多? | 否 |
31 | 重要 | 是否混淆了成员函数的重载、覆盖与隐藏? | 否 |
32 | 不重要 | 重载函数是否有二义性? | 无 |
33 | 不重要 | 运算符的重载是否符合制定的编程规范? | 是 |
34 | 重要 | 是否用内联函数取代了宏代码? | 无 |
35 | 重要 | 构造函数中是否遗漏了某些初始化工作? | 否 |
36 | 重要 | 是否正确地使用构造函数的初始化表? | 无 |
37 | 重要 | 析构函数中是否遗漏了某些清除工作? | 无 |
38 | 重要 | 数组或指针的下标是否越界? | 否 |
39 | 重要 | 动态内存的申请与释放是否配对?(防止内存泄漏) | 无 |
40 | 重要 | 是否有效地处理了“内存耗尽”问题? | 否 |
四:总体评价
1.规模
代码的规模不大,仅有108行,但是却可以将对应的功能实现齐全,例如:将内容写入文件;将内容在文件中按规定的格式存储;将内容从文件中读出;将文件中的内容进行显示等等,可谓“麻雀虽小,五脏俱全”。唯一的不足就是,代码的注释过于潦草,希望在今后的代码书写中可以在注释上多加注意。
2.执行效率
本段代码因规定了每行的字符数量为80,字符数量不多,而且每次都是直接写入文件,显示时直接进行读取,所以代码的执行效率较高。
3.占用空间
每次写入文件和从文件中读取都利用了同一个文件,占用空间较少,但是缺点在于,每次利用的文件都是同一个,在删除其中内容或是进行下一次格式规范的时候会有残余内容对规范进行影响。
4.可读性
代码可读性一般,因为代码规模较小导致代码的可读性降低。并且每次格式规范的文件都在同一个,可能也会影响代码的可读性。
总的来说,本课程设计的代码完成质量较高,可以较好的实现题目中的要求,但是对于题目之外的扩展比较少,代码的可读性不高,注释添加的不明确,如果是团队完成一个代码的编写,不写注释或者注释书写的不够清晰明了,在团队中的其他人书写接下来的代码时会给队友造成很多不必要的麻烦。希望在今后的代码书写中可以保持继续高质量的完成,同时完善代码可读性以及注释的书写。