zoukankan      html  css  js  c++  java
  • 个人作业 Week2

    一、代码复审Check List

    1、概要部分

    • 代码能符合需求和规格说明么?
      符合。生成数独与解数独功能没有问题,对于错误输入也能发现。但建议有更好的错误提示信息。
    • 代码设计是否有周全的考虑?
      未考虑涉及的文件本身可读可写的问题。例如sudoku.txt本身只读,会导致程序崩溃。其余如参数判断、数字范围等均无问题。
    • 代码可读性如何?
      有简要注释。大部分函数、参数名有有意义的名字。结合博客能明白大致逻辑,但对于更具体的实现并不容易看懂。
    • 代码容易维护么?
      功能块划分较好。但部分函数针对的功能性较强,缺乏相应注释的情况下较难上手。
    • 代码的每一行都执行并检查过了吗?

    2、设计规范部分

    • 设计是否遵从已知的设计模式或项目中的常用模式?
      划分了各个类及头文件。
    • 有没有硬编码或字符串/数字等存在?
      存在较多硬编码现象,特别是生成数独部分。 comment
    • 代码有没有依赖于某一平台,是否会影响将来的移植?(如Win32到Win64)
      没有
    • 开发者新写的代码能否用已有的Library/SDK/Framework中的功能实现?在本项目中是否存在类似的功能可以调用而不用全部重新实现?
      没有发现
    • 有没有无用的代码可以清除?
      未发现无用或重复部分。也没有注释的代码。

    3、代码规范部分

    • 修改的部分符合代码标准和风格么(详细条文略)?
      • 使用了Tab作缩进符。以4个空格作缩进符更好。
      • 使用了"{"与上一行代码一起,"}"另起一行的方式。"{"、"}"各自独占一行更利于阅读。
      • 存在超过一行100字符的行
      • 函数、参数命名大多数存在意义且易懂
      • 对功能块的划分、头文件的引用做得很好

    4、具体代码部分

    • 有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常?
      对参数以及文件内容的错误进行了处理。如打开文件,便没有检查返回值。
    • 参数传递有无错误,字符串的长度是字节的长度还是字符(可能是单/双字节)的长度,是以0开始计数还是以1开始计数?
      无。字节的长度,以0计数。
    • 边界条件是如何处理的?Switch语句的Default是如何处理的?循环有没有可能出现死循环?
      for语句采用特定参数值来判断,while语句多为文件读入是否完毕的判断。使用了Switch语句,但均未使用default来处理(如果使用该函数时传参正确并不会引发问题)。未发现死循环。
    • 有没有使用断言(Assert)来保证我们认为不变的条件真的满足?
      没有。
    • 对资源的利用,是在哪里申请,在哪里释放的?有没有可能导致资源泄露(内存、文件、各种GUI资源、数据库访问的连接,等等)?有没有可能优化?
      打开的文件均关闭。基本为直接申请的数组空间。以静态方式直接声明。
    • 数据结构中是否有无用的元素?
      未发现。

    5.效能

    • 代码的效能(Performance)如何?最坏的情况是怎样的?
      生成数独效率非常好,100w 1.1s,解数独为100w 43.8s(来自助教大大的自动测试)
    • 代码中,特别是循环中是否有明显可优化的部分(C++中反复创建类,C#中string的操作是否能用StringBuilder 来优化)?
      未发现。
    • 对于系统和网络调用是否会超时?如何处理?
      无该部分。

    6.可读性

    • 代码可读性如何?有没有足够的注释?
      功能划分和函数命名较好,有基本注释,可以了解代码逻辑,但对更具体的实现不容易了解。

    7.可测试性

    • 代码是否需要更新或创建新的单元测试?
      暂时未发现。
    • 还可以有针对特定领域开发(如数据库、网页、多线程等)的核查表。
      无此部分。

    二、设计一个代码规范

    工具提供的代码规范和你个人的代码风格有什么不同?

    • 使用了cppline,大致有这几类
      Tab found; better to use spaces 没有使用四个空格代替缩进
      Lines should be <= 80 characters long 存在大于80字符的行
      Should have a space between // and comment 应该在//和注释之间有一个空格
      An else should appear on the same line as the preceding }
      If an else has a brace on one side, it should have it on both [readability/braces] 上两个错误经常一起出现,为大括号的位置不合规范
      Extra space for operator ++; ++符号和变量间不能有空格
      Redundant blank line at the end of a code block should be deleted. 代码块最后的空行应该被删除
      Line contains invalid UTF-8 (or Unicode replacement character) 使用了中文注释报的错
      Line ends in whitespace. 代码行最后存在空格
    • 工具提供的代码规范里有哪些部分是你之前没有想到的?
      最开始提示没有copyright,这个是完全没想过(笑)。
      如一行的最长字符数、注释与//间的空行、++运算符与变量间不能有空格,代码块最后的空行这些规范,完全没有想过。
    • 为什么要这样规范?这样的规范有意义吗?
      便于阅读,使代码结构更加清晰,减少因规格造成的阅读障碍及可能的错误发生。
      我觉得是有意义的。虽然说这些规范不影响代码功能本身,但是对一个团队来说,代码是给大家看的。格式统一的代码不仅赏心悦目,也能便于他人的阅读维护、减少自身由于格式复杂造成的不必要的错误。

    本组结对编程使用的代码规范

    • 缩进方式
      4个空格

    • 行宽限制
      每行100字符

    • 大括号的用法
      每个{和}都独占一行

    • 变量命名
      名字要体现其意义。
      类/结构:每个单词首字母大写,如:SudokuSolver
      函数:使用“动词”或“动词+名词”的形式,每个单词首字母大写,如:Record(), SetValue()
      变量:由作用域前缀+一个或多个单词组成,第一个单词小写,其余单词首字母大写(少数用途简单明了的局部变量可用i,j,x,y等表示)

    • 变量类型举例
      局部变量:temp, outFile
      成员(member)变量:m_matrix
      静态(static)变量:s_count
      全局(global)变量:g_num

  • 相关阅读:
    症状解,杠杆解
    分页[转]
    如何用SVN版本控制器将提交的文件还原到以前的版本
    VN问题:error:请求的名称有效,但是找不到请求的类型的
    客户端怎么查看SVN的代码库
    VisualSVN Server的配置和使用方法
    2017年04月19日
    github 添加geilibuy仓库,给力百货开放源代码
    gae crawler
    windows python相关工具
  • 原文地址:https://www.cnblogs.com/donemeb/p/7616088.html
Copyright © 2011-2022 走看看