zoukankan      html  css  js  c++  java
  • 第四次博客作业-结对项目

    博客和项目地址

    博客地址

    康瑞的博客地址: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。使代码的应用情景更加全面,逻辑更加通顺,结构更加清晰,质量更高。
    相比以前的个人编码,两人结对编程效率更加高。让我们对这种组队开发代码的形式,有了新的认识和感受。

    场景照片

    结对照片
    结对照片

    程序设计说明

    程序设计说明类图
    程序设计说明类图
  • 相关阅读:
    自动化基础知识
    第一章Google软件测试介绍
    《将博客搬至CSDN》
    二叉树的先序遍历和中序遍历分析(递归)
    java 部分快捷功能
    toString
    自增自减运算符剖析
    二进制数的直接表示
    编程中的&&和||
    npm 镜像地址设置
  • 原文地址:https://www.cnblogs.com/CrazyIdeas/p/11711387.html
Copyright © 2011-2022 走看看