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. MySQL出现Access denied for user 'root'@'%' to database 'netai_test'问题

    访问数据库时报错信息 Access denied for user 'root'@'%' to database 'netai_test' 原因:这是由于创建数据库后没有对用户授权,使用户可以访问数据 ...

  2. mysql从零开始

    常用的数据库有哪些? oralce,sqlserver,mysql,db2 有钱就用oracle吧 oracle和mysql的区别:https://zhidao.baidu.com/question/ ...

  3. sugar 自动为DP 加cache (or打表)

    // from http://www.csdn.net/article/2015-12-03/2826381 #include <iostream> #include <tuple& ...

  4. 2016 CCPC 合肥赛区 平行四边形//打铁记录..... 背锅还是我在行 此处@ctr 233

    也希望自己记住这些题并不是真的很难很难... 平行四边形... 这个题要两个直线上的两个点和给出点中的两个点组成的平行四边形面积最大. 确定两个点后,发现线上的点随之确定.那么我们解出线上的点 然后求 ...

  5. Python全栈之路目录结构

    基础 1.Python全栈之路-----基础篇 2.Python全栈之路---运算符与基本的数据结构 3.Python全栈之路3--set集合--三元运算--深浅拷贝--初识函数 4.Python全栈 ...

  6. asp.net 将word文档进行编辑并导出一个新的word

    最近做项目,需要多word文档进行编辑并导出一个新的word,在最初的word编辑中留下特定的字符串用来替换,然后在本地生成一个新的word文档,并且不修改服务器中的word文档,这样才能保证服务器中 ...

  7. linux环境下配置solr5.3详细步骤

    本人上周五刚刚配置了一遍centos下配置solr5.3版本,综合借鉴并改进了一些教程,贴出如下 单位使用内网,本教程暂无截图,抱歉 另,本人是使用.net编程调用solr的使用的是solrnet,在 ...

  8. 面试题<初级>

    INTERVIEW .markdown-body ul pre code { background:red; font-size:40px; } @code-char:"```" ...

  9. JavaScript数组删除重复元素(去重)的方法

    1. var arr=str.split(""); ;arr.length->i;i++){ ;j<arr.length;j++){ if(arr[j]==arr[i] ...

  10. AngularJs自定义指令详解(4) - transclude

    transclude默认值为false,如果设置 transclude为true,那么相应地,必须在模板代码中加入ng-transclude指令. 先看个例子: <!DOCTYPE html&g ...