第四次博客作业-结对项目

博客和项目地址

博客地址

康瑞的博客地址:https://www.cnblogs.com/CrazyIdeas/p/11711387.html.
张春蕾的博客地址:https://www.cnblogs.com/lzcl/p/11712513.html.

项目的Github地址

生成四则表达式的github地址:https://github.com/HarLearn/GeneratingArithmetic

代码互审

    为激活,黑体加粗为重要。

康瑞的代码审查表(由张春蕾完成)

  • 概要部分:
  • 代码符合需求和规格说明吗?

    代码设计是否考虑周全?

    代码可读性如何?

    代码容易维护吗?

    代码的每一行都执行并检查了吗?

  • 设计规范部分
  • 设计是否遵从一致的设计模式或项目中常用的模式?

    有没有硬编码或字符串/数字等存在?

    x有没有依赖一个平台,是否会影响将来的移植?

    x开发者是否使用已经存在的开发模板。

    x开发者新写的代码能否用已有的SDK 中的功能实现?

    本代码是否存在类似的功能可以调用而不用全部重新实现?

    x有没有无用的代码可以清除?

  • 代码规范部分
  • 修改的部分符合代码标准和风格吗?

    注释是否较清晰且必要?

    x函数是否已经有文档注释?

    每行是否只声明了一个变量?(特别是那些可能出错的类型)

    x代码行长度是否在要求之内?

  • 具体代码部分
  • 有没有对错误进行处理?

    对于调用的外部函数,是否检查了返回值或处理了异常?

    x入口数据的合法范围是否都被进行了判断?(尤其是数组)

    参数传递有无错误?

    字符串的长度是字节的长度还是字符(可能是单/双字节)的长度?

    是以 0开始计数还是以 1 开始计数?

    边界条件是如何处理的?

    xswitch 语句的 default 分支是如何处理的?

    for循环是否都使用了包含下限不包含上限的形式?

    x循环有没有可能出现死循环?

    x有没有使用断言,来保证我们认为不变的条件是真的得到满足?

    x对资源的利用,是在哪里申请,在哪里释放的?

    x有无可能存在资源泄露(内存,文件、各种GUI 资源、数据库访问的连接,等等)?

    有没有优化的空间?

    x数据结构中有没有用不到的元素?

  • 效能
  • x代码的效能如何?

    最坏的情况是怎样?

    代码中,特别是循环中是否有明显可优化的部分?

    x对于系统和网络的调用是否会超时?如何处理?

  • 可读性
  • 代码可读性如何,有没有足够的注释?

    x缩进层数是否不超过规定?

    长行拆分是否得体?

    x代码行内的空格是否得体?

  • 可测试性
  • 代码是否需要更新或创建新的单元测试?

张春蕾的代码审查表(由康瑞完成)

  • 概要部分:
  • 代码符合需求和规格说明吗?

    代码设计是否考虑周全?

    x代码可读性如何?

    代码容易维护吗?

    代码的每一行都执行并检查了吗?

  • 设计规范部分
  • 设计是否遵从一致的设计模式或项目中常用的模式?

    有没有硬编码或字符串/数字等存在?

    有没有依赖一个平台,是否会影响将来的移植?

    开发者是否使用已经存在的开发模板。

    开发者新写的代码能否用已有的SDK 中的功能实现?

    x本代码是否存在类似的功能可以调用而不用全部重新实现?

    x有没有无用的代码可以清除?

  • 代码规范部分
  • x修改的部分符合代码标准和风格吗?

    注释是否较清晰且必要?

    函数是否已经有文档注释?

    每行是否只声明了一个变量?(特别是那些可能出错的类型)

    x代码行长度是否在要求之内?

  • 具体代码部分
  • 有没有对错误进行处理?

    对于调用的外部函数,是否检查了返回值或处理了异常?

    x入口数据的合法范围是否都被进行了判断?(尤其是数组)

    参数传递有无错误?

    字符串的长度是字节的长度还是字符(可能是单/双字节)的长度?

    x是以 0开始计数还是以 1 开始计数?

    边界条件是如何处理的?

    xswitch 语句的 default 分支是如何处理的?

    xfor循环是否都使用了包含下限不包含上限的形式?

    循环有没有可能出现死循环?

    有没有使用断言,来保证我们认为不变的条件是真的得到满足?

    x对资源的利用,是在哪里申请,在哪里释放的?

    x有无可能存在资源泄露(内存,文件、各种GUI 资源、数据库访问的连接,等等)?

    有没有优化的空间?

    x数据结构中有没有用不到的元素?

  • 效能
  • x代码的效能如何?

    最坏的情况是怎样?

    代码中,特别是循环中是否有明显可优化的部分?

    x对于系统和网络的调用是否会超时?如何处理?

  • 可读性
  • 代码可读性如何,有没有足够的注释?

    x缩进层数是否不超过规定?

    长行拆分是否得体?

    x代码行内的空格是否得体?

  • 可测试性
  • 代码是否需要更新或创建新的单元测试?

代码规范

代码风格规范

  • 缩进:为 4个空格。
  • 括号:在复杂条件表达式中,用括号清楚表示出优先级。
// 通过 括号说明 优先级
if(a && (b || c) && d){
    // 执行语句
}
  • {}的使用:{跟在语句的结束处。
if(conditon){
    // 执行语句
}

//而不是 下面
if(condition)
{
    // 执行语句
}
  • 断行与空白的{}行:不同语句需要换行,在条件语句和循环语句中 单行语句也需要写在 {} 内。如:
if(condition){
    // 单条 语句 也使用 {}
    DoSomething();
}else{
    DoSomething();
}
  • 分行:每条语句占一行,不要把多条语句放在一行上。
int variableA,variableB; // 不采用多个变量声明写在一行
// 把多个变量声明 分开写
int variableA;
int variableB;
  • 命名:采用驼峰命名法。都是用英文,见名知意。
  • 变量:采用小驼峰命名,第一个单词以小写字母开始;第二个单词的首字母大写或每一个单词的首字母都采用大写字母。
int variableA = 0;
boolean isVariable = false;
  • 包名:采用全部小写。
package com.xxxx.xxx
  • 类,接口:采用大驼峰命名,每个单词名的首字母都大写。
public class TestClass{
    // 一些 属性 和 方法
}

interface TestInterface{
    // 一些方法
}
  • 常量:常量所有字母大写,下划线分割。
const MAX_COUNT = 10;
  • 方法名:采用小驼峰命名,使用动词开头。
public int getResult(){
    // 详细内容省略
    return 1;
}

public void setResult(int variable){
    // 详细内容省略
}
  • 注释:注释都是用 ASCII 字符,复杂注释写在函数头。遇到复杂逻辑 需要通过注释,写明意思。
// Single-Line Comments

/*
multiline comment
*/


/**
Documentation Comments
*/

代码设计规范

  • 一个函数只需要完成一个功能。见名知意。
  • 函数应该按照 功能进行分类。
  • 预期异常,预期异常通过捕获异常来获得异常信息;
  • 数据能在程序中取的就从程序中取。不用客户输入(减少客户输入)。比如客户号 信息 等。
  • 如果有参数输入尽可能减少参数输入的个数(4个->0个);
  • 验证入参(尽可能的实现输入参数的正确性);
  • url全部小写。
  • 不要在构造函数中做过多复杂的操作,简单初始化数据成员即可。
  • 公共部分,应该提取出来,不应进行重复操作。

结对编程感受、场景

结对编程感受

本次我们通过结对编程,在一起完成了生成四则运算式的小项目。虽然在编写代码时有些辛苦,但是还是发现了一些有趣的问题:
我们在谈论、评价一段代码时,她总会说它在某些情景下,这条语句会出现问题。我提到的点都是在逻辑方面的问题。感觉女生在编程方面比男生思考的更加多,男生在逻辑性方面更加有优势。
我们都是对编程有兴趣的人,在编程方面的优势得到了互补,使编程经验得到了提高。在结对编程过程中,解决了更多的BUG。使代码的应用情景更加全面,逻辑更加通顺,结构更加清晰,质量更高。
相比以前的个人编码,两人结对编程效率更加高。让我们对这种组队开发代码的形式,有了新的认识和感受。

场景照片

结对照片
结对照片

程序设计说明

程序设计说明类图
程序设计说明类图
posted @ 2019-10-21 11:53  CrazyIdeas  阅读(271)  评论(1编辑  收藏  举报