任务1:在学习通上注明结对的成员对格式(5分)
4班顾雪微——4班许爽
任务2:结对的成员共同完成本次作业,撰写博客并将结对项目的程序发布到github上(95分)
博客的内容安排如下:
1.提供你的结对成员的博客链接地址(5分)
2.结对成员对四则运算项目进行代码互审,并给出代码审查结果表
顾雪微代码审查表(由许爽完成)(10分)
程序的板式 | ||
重要性 | 审查项 | 结论 |
空行是否得体? | 是 | |
代码行内的空格是否得体? | 是 | |
长行拆分是否得体? | 是 | |
“{” 和 “}” 是否对齐于同一列? | 是 | |
重要 | 一行代码是否只做一件事?如只定义一个变量,只写一条语句。 | 是 |
重要 | If、for、while、do等语句自占一行,不论执行语句多少都要加 “{}”。 | 是 |
重要 | 在定义变量(或参数)时,是否将修饰符 * 和 & 紧靠变量名?注释是否清晰并且必要? | 是 |
长行拆分是否得体? | 是 | |
重要 | 注释是否有错误或者可能导致误解? | 否 |
命名规则 | ||
重要性 | 审查项 | 结论 |
重要 | 命名规则是否与所采用的操作系统或开发工具的风格保持一致? | 是 |
标识符是否直观且可以拼读? | 是 | |
重要 | 程序中是否出现相同的局部变量和全部变量? | 否 |
类名、函数名、变量和参数、常量的书写格式是否遵循一定的规则? | 是 | |
静态变量、全局变量、类的成员变量是否加前缀? | 否 | |
表达式与基本语句 | ||
重要性 | 审查项 | 结论 |
重要 | 如果代码行中的运算符比较多,是否已经用括号清楚地确定表达式的操作顺序? | 是 |
重要 | 是否用隐含错误的方式写if语句? 例如 | |
如果循环体内存在逻辑判断,并且循环次数很大,是否已经将逻辑判断移到循环体的外面? | 是 | |
将浮点变量用“==”或“!=”与任何数字比较。 | 否 | |
函数设计 | ||
重要性 | 审查项 | 结论 |
参数的书写是否完整?不要贪图省事只写参数的类型而省略参数名字。 | 是 | |
是否使用类型和数目不确定的参数? | 否 | |
是否省略了函数返回值的类型? | 否 | |
类的高级特性 | ||
重要性 | 审查项 | 结论 |
是否违背了继承和组合的规则? | 否 | |
其它常见问题 | ||
重要性 | 审查项 | 结论 |
重要 | 变量的数据类型有错误吗? | 否 |
重要 | 变量的初始化或缺省值有错误吗? | 否 |
重要 | 循环终止条件不正确吗? | 否 |
许爽代码审查表(由顾雪微完成)(10分)
程序的板式 | ||
重要性 | 审查项 | 结论 |
空行是否得体? | 是 | |
代码行内的空格是否得体? | 是 | |
长行拆分是否得体? | 是 | |
“{” 和 “}” 是否对齐于同一列? | 是 | |
重要 | 一行代码是否只做一件事?如只定义一个变量,只写一条语句。 | 是 |
重要 | If、for、while、do等语句自占一行,不论执行语句多少都要加 “{}”。 | 是 |
重要 | 在定义变量(或参数)时,是否将修饰符 * 和 & 紧靠变量名?注释是否清晰并且必要? | 是 |
长行拆分是否得体? | 是 | |
重要 | 注释是否有错误或者可能导致误解? | 否 |
命名规则 | ||
重要性 | 审查项 | 结论 |
重要 | 命名规则是否与所采用的操作系统或开发工具的风格保持一致? | 是 |
标识符是否直观且可以拼读? | 是 | |
重要 | 程序中是否出现相同的局部变量和全部变量? | 否 |
类名、函数名、变量和参数、常量的书写格式是否遵循一定的规则? | 是 | |
静态变量、全局变量、类的成员变量是否加前缀? | 否 | |
表达式与基本语句 | ||
重要性 | 审查项 | 结论 |
重要 | 如果代码行中的运算符比较多,是否已经用括号清楚地确定表达式的操作顺序? | 是 |
重要 | 是否用隐含错误的方式写if语句? 例如 | |
如果循环体内存在逻辑判断,并且循环次数很大,是否已经将逻辑判断移到循环体的外面? | 是 | |
将浮点变量用“==”或“!=”与任何数字比较。 | 否 | |
函数设计 | ||
重要性 | 审查项 | 结论 |
参数的书写是否完整?不要贪图省事只写参数的类型而省略参数名字。 | 是 | |
是否使用类型和数目不确定的参数? | 否 | |
是否省略了函数返回值的类型? | 否 | |
类的高级特性 | ||
重要性 | 审查项 | 结论 |
是否违背了继承和组合的规则? | 否 | |
其它常见问题 | ||
重要性 | 审查项 | 结论 |
重要 | 变量的数据类型有错误吗? | 否 |
重要 | 变量的初始化或缺省值有错误吗? | 否 |
重要 | 循环终止条件不正确吗? | 否 |
3.选取其中一个成员的项目为基础,进行结对编程。结对项目撰写的博客要求:(30分)
(a)结合课堂讲授内容,制订一份2人共同遵守的代码编写基本规范(至少包括注释规范与变量命名规范)。
- 函数的大小一般不要超过50行,函数越小,代码越容易维护。
- 空行起着分隔程序段落的作用。空行得体(不过多也不过少)将使程序的布局更加清晰。
- 一行代码只做一件事情,如只定义一个变量,或只写一条语句。这样的代码容易阅读,并且方便于写注释。
- if、for、while、do等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加{}。这样可以防止书写失误。
- 代码行最大长度宜控制在70至80个字符以内。代码行不要过长,否则眼睛看不过来,也不便于打印。
- 在代码中经常残留一下被注释的代码,如果这段代码还有价值,必须对该段代码加上被注释的原因,或者不需要有的就直接删除。
- 边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。
- 注释应当准确、易懂,防止注释有二义性。
- 标识符应当直观且可以拼读,可见名知意,不必进行“解码”。
- 所有的变量,函数,类的命名,若需要多个单词时,每个单词直接连写,不要用下划线(“_”)或横线(“-”)分开。如:DeviceInfo,RemoteCamera。
- 变量的名字应当使用“名词”或者“形容词+名词”。首字母以小写开头。
函数名字与返回值类型在语义上不可冲突。
(b)描述结对编程的感受。
1.互相学习
结对编程也是一个互相学习的过程。在结对编程过程中,两人会不断就实现方法、代码风格或命名方法等进行讨论,两个人的思路能够进行互补,在编写过程中能够学到对方解决问题的思路和方法,对于提高自己解决问题和编程能力有很大的帮助。
2.认真对待
我认为,结对编程与个人编程一个最明显的不同就体现在心理差异上。因为结对编程是两个人的事情,不论是担任驾驶员还是领航员的角色,都需要对程序设计和实现有足够的准备,否则很容易变成一个人写代码,另一个人无所事事。开发过程中,要打起十二分精神,两个人紧密配合,谁也不好意思开小差,能够集中注意力在代码上。
3.提高效率
结对编程的形式使得代码处于不断地审查过程,每一段代码都由一个人编写,另一个人检查,最大程度上减少了出现bug的可能;两人互相交流,商讨实现方式,遇到问题时,能够做到互补。在测试过程中,因为有两个人共同调试,所以能够更快的发现问题所在。
(c)结对场景照片