1.代码规范


  • 这些规范都是官僚制度下产生的浪费大家的编程时间、影响人们开发效率, 浪费时间的东西。

  代码规范并不是从官僚制度下产生,它是为了提高项目团队开发效率而产生的一种工具,能够极大的增强代码可读性,同时提高了代码的可维护性。书写代码规范能给开发效率和维护效率带来巨大的增益,并不会因为多敲那么几行字或者使用自己不熟悉的规范而降低开发效率。

  • 我是个艺术家,手艺人,我有自己的规范和原则。

  编程是一门艺术,但是这是靠程序的数据结构设计得是否精巧易用,算法是否设计的又快又好来展现的。代码规范则是一种锦上添花的功效,好的代码规范能让本来就“很美的程序”更容易被读者接受,更好地展现程序的美。

  • 规范不能强求一律,应该允许很多例外。

  每个团队都可以或者说必须要有自己的代码规范,但是其肯定只是有少部分是由自己团队的特殊性所决定的,基础还是公认的一些代码规范。“存在即合理”,从这个角度上来看,许多书中所提倡的代码规范,一般都是存在了很久,经过无数的程序员修整之后的代码规范,都是有其合理之处的,值得我们去使用。

  • 我擅长制定编码规范,你们听我的就好了。

  作为团队的成员,所有的事情肯定是需要大家同意才能实施的,(甚至是自己的代码设计方案),所以代码规范这个肯定是要选取大部分人比较认同的方案来实施,少数人服从多数人嘛~~~

2.代码复审


 General

  • Does the code work? Does it perform its intended function, the logic is correct etc.

  这位同学的代码虽然能成功运行,但是依然有一些bug存在。

  Bug1--生成的答案文件中会存在-1、-4这样的结果,这明显出现了计算功能上的错误。如下图所示

  Bug2--我用其自己生成的题目与答案文件进行批改功能的测试,结果批改的正确性有问题,结果如下图

  显然这位同学的代码在功能和逻辑上还是有些问题的。

  • Is all the code easily understood?

  这位同学使用的C#语言编程,整个设计思想很好地使用了面向对象编程的思想,所以代码层次以及可读性还是不错的,能够比较快的理解他的代码。

  

  上面这段代码中,这里try--catch想catch什么?而且两个处理路径实际上的效果一模一样,其使用try--catch的意义在哪里?

  • Does it conform to your agreed coding conventions? These will usually cover location of braces, variable and function names, line length, indentations, formatting, and comments.

  至于代码规范这方面,这位同学基本上遵守了比较公认的一些代码规范,代码看起来也比较明了,但是存在很多不明意义的空行,有的时候右大括号与最后一行代码隔了好几行,这样很容易使代码逻辑层次不明显,这点我不赞同。

  • Is there any redundant or duplicate code?

  这位同学的代码还是比较简结的,没有很多重复的多余的代码。

  • Is the code as modular as possible?

  这一点是这位同学做的非常好的一点,因为他使用了面向对象建模的思想,所以他的程序封装的相当好。

  • Can any global variables be replaced?

  由于C#语言的完全面向对象的特性,所以不存在全局变量的概念

  • Is there any commented out code?

  这位同学的代码非常干净,没有注释掉的代码

  • Do loops have a set length and correct termination conditions?

  所有的循坏他都比较好的处理了长度等问题,即使是生成不了所要求的题目个数,也会及时地输出提示信息并结束循坏。

  • Can any of the code be replaced with library functions?

  这应该没有,从这位同学的编码风格中可以看出他使用基本类库还是非常熟练的。

  • Can any logging or debugging code be removed?

  最后的坂本并没有一些调试代码在其中。

Security

  • Are all data inputs checked (for the correct type, length, format, and range) and encoded?

  因为C#是一个强类型的语言,所以这些检查基本都靠语言本身的编译器来做了。

  • Where third-party utilities are used, are returning errors being caught?

  这位同学估计是在面向对象建模课上养成的习惯,在main方法中用了很多try--catch以保证程序不崩溃。

  • Are output values checked and encoded?

  存在一些地方对于输出的值并不满足题目的需求,然而他还是直接输出到了答案文件中去。

  • Are invalid parameter values handled?

  这位同学的出错处理如上面所说,至少不崩,对于这些不符合逻辑的值,处理肯定存在缺陷,不然之前的bug不会出现。

Documentation

  至于文档这方面这次个人项目,似乎大家都木有写。。。。就不评价了。

3.个人感悟


通过这次审查小伙伴的代码,我发现要是我自己按照这个表格来审查我自己的代码, 我还是存在很多问题的。比如重复代码问题,我在处理输出不分的时候,为了思考的简单点就写了许多的重复代码。还有循环处理问题,我就没有我的小伙伴做的好,假如我遇到了生成不够输入要求得题目,我并没有相应地输出提示信息及时地结束程序,我会一直运行。。。。这是我编码时没有考虑到的重大失误。

同时我也木有很好的注意代码规范,我的代码可读性不够好,这是我下次编码中要注意的。

另外,我们既然在上这个软件工程的课,我们就应该开始重视文档和测试的必要性,这两项工作在真正的项目中扮演了非常重要的角色。他们能帮助我们理清自己的思路,完善程序的设计,同时还能及时的解决一些很细小不容易发现的小bug。所以在以后的作业中,我应该开始学习写文档和单元测试。

个人博客作业week2——代码复审的更多相关文章

  1. 个人博客作业-Week2 (代码规范, 代码复审)

    代码规范: 1.这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 编码规范它包含了代码格式,还包括了编码风格和其他规范,通常涉及:缩进.空格使用.Tab使用 注释. ...

  2. [2017BUAA软工]第二次博客作业:代码复审

    〇.comment链接 https://github.com/hanayashiki/Sudoku/issues/1 一.代码复审 1.概要部分 (1)代码能符合需求和规格说明么? 经测试,对于合法输 ...

  3. 个人博客作业Week2(代码规范,代码复审)

    Q:是否需要有代码规范 首先我们来搞清楚什么是“代码规范”,它和“代码风格”又有什么关系.依据个人的审美角度,我可能更喜欢在函数与函数之间空出一行,可能在命名习惯和代码注释上更加的internatio ...

  4. 个人博客作业Week2

    一.是否需要有代码规范 这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 我反驳这个观点,这些规范是成千上万的程序员在开发程序中总结出来的代码规范,他有助于我们的开 ...

  5. 软工个人作业-博客作业-WEEK2

    1.是否需要代码规范:    (1)这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西.        首先来说,从短期上和个体上来看,一个团队的代码风格必然会在一定程 ...

  6. 个人博客作业Week2(9月30日)

    一.是否需要有代码规范 1.这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 这些规范并不是一开始就有的,也不是由某个人规定的,代码规范是程序员们在不断地编程实践过 ...

  7. 个人作业 - Week2 - 代码复审

    代码复审Check List 概要部分 代码能符合需求和规格说明么? 能完成1~1000000个数独的求解与生成,并能处理异常输入,满足需求. 代码设计是否有周全的考虑? 为输入单独开设了一个输入检测 ...

  8. #个人博客作业week2——结对编程伙伴代码复审

    General 1.程序能够顺利地运行.程序通过命令行输入,能够向对应的文件中输出符合要求的题目和答案.程序能够根据用户的不同选择,进行题目的生产或答案的校验,生成出的题目符合参数要求和项目的查重等各 ...

  9. 个人博客作业Week2 是否需要有代码规范

    问题:是否需要有代码规范 对于是否需要有代码规范,请考虑下列论点并反驳/支持: 1.这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 2.我是个艺术家,手艺人,我有 ...

随机推荐

  1. Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->Spring Framework概述

    Spring Framework是什么? it is a potential one-stop-shop for building your enterprise-ready applications ...

  2. HDU 4832 Chess (DP)

    Chess Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  3. android 各种xml资源的引用方式

    更多资源类型 本页定义了其它一些具体的资源类型,包括: Bool 存放布尔值的XML资源. Color 存放颜色值的XML资源(十六进制颜色). Dimension 存放数量值的XML资源(带计量单位 ...

  4. C. Shaass and Lights 组合数学

    http://codeforces.com/contest/294/problem/C 把那个数组n分段了,那么有两类. 1.开头和端点那些,就是只有一端在开始的,这个时候,要开完这些灯,只能循序渐进 ...

  5. Shell学习笔记 - 环境变量配置文件(转)

    一.source命令 功能:在当前bash环境下读取并执行配置文件中的命令 1. 命令格式 source 配置文件  或  . 配置文件 2. 命令示例 [root@localhost ~]# sou ...

  6. 利用googleapis在日文系统中改善中文字

    加入以下两句 1. <head> <link rel="stylesheet" href="http://fonts.googleapis.com/ea ...

  7. weblogic部署脚本

    #!/bin/bash #-- #writen lxh dir_war=/home/weblogic/war dir_app=/servyouapp/weblogic/user_projects/do ...

  8. JavaWeb 学习003-简单登录页面功能实现

    先说下题外话:学习不是看你学了多久,重点是学到多少: 这就要求   效率.我在这三个小时,但是有效率的又有多久?只是做了这么一点简单的事. 登录页面 跟数据库交互,进行判断是否登陆成功.我只是实现了一 ...

  9. 匿名函数 lambda表达式(lambda expression)

    阅读g2log时,发现有两行代码居然看不懂. 1. auto bg_call =  [this, log_directory]() {return pimpl_->backgroundChang ...

  10. Maven 命令速记

    1. 创建项目 1) 创建父目录 mvn archetype:generate -DgroupId=com.qunar.training -DartifactId=training -Dversion ...