个人博客作业week2——代码复审
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——代码复审的更多相关文章
- 个人博客作业-Week2 (代码规范, 代码复审)
代码规范: 1.这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 编码规范它包含了代码格式,还包括了编码风格和其他规范,通常涉及:缩进.空格使用.Tab使用 注释. ...
- [2017BUAA软工]第二次博客作业:代码复审
〇.comment链接 https://github.com/hanayashiki/Sudoku/issues/1 一.代码复审 1.概要部分 (1)代码能符合需求和规格说明么? 经测试,对于合法输 ...
- 个人博客作业Week2(代码规范,代码复审)
Q:是否需要有代码规范 首先我们来搞清楚什么是“代码规范”,它和“代码风格”又有什么关系.依据个人的审美角度,我可能更喜欢在函数与函数之间空出一行,可能在命名习惯和代码注释上更加的internatio ...
- 个人博客作业Week2
一.是否需要有代码规范 这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 我反驳这个观点,这些规范是成千上万的程序员在开发程序中总结出来的代码规范,他有助于我们的开 ...
- 软工个人作业-博客作业-WEEK2
1.是否需要代码规范: (1)这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 首先来说,从短期上和个体上来看,一个团队的代码风格必然会在一定程 ...
- 个人博客作业Week2(9月30日)
一.是否需要有代码规范 1.这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 这些规范并不是一开始就有的,也不是由某个人规定的,代码规范是程序员们在不断地编程实践过 ...
- 个人作业 - Week2 - 代码复审
代码复审Check List 概要部分 代码能符合需求和规格说明么? 能完成1~1000000个数独的求解与生成,并能处理异常输入,满足需求. 代码设计是否有周全的考虑? 为输入单独开设了一个输入检测 ...
- #个人博客作业week2——结对编程伙伴代码复审
General 1.程序能够顺利地运行.程序通过命令行输入,能够向对应的文件中输出符合要求的题目和答案.程序能够根据用户的不同选择,进行题目的生产或答案的校验,生成出的题目符合参数要求和项目的查重等各 ...
- 个人博客作业Week2 是否需要有代码规范
问题:是否需要有代码规范 对于是否需要有代码规范,请考虑下列论点并反驳/支持: 1.这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 2.我是个艺术家,手艺人,我有 ...
随机推荐
- 【Android端 APP 内存分析】使用工具进行APP的内存分析
Android端可以通过adb 命令直接获取内存信息,当然Android studio也提供了对内存的监控分析工具,并且后续可以结合MAT做分析 今天介绍的是通过Android studio和MAT工 ...
- Unity使用Windows弹窗保存图片
此功能都在类EditorUtility中(using UnityEditor;) 包括 OpenFilePanel打开文件窗口Displays the "open file" di ...
- oracle函数应用
----Oracle中的函数 oracle中函数的分类: --第一种:日期函数 --第二种: 字符函数 --第三种: 数学函数 --第四种: 转换函数 --第五种: 分析函数 ------------ ...
- 第三章 centos安装git
yum install git 安装后的默认存放地点/usr/bin/git
- 关于AJAX
Ajax(异步JavaScript和XML) ajax主要用于异步加载页面,可以使用户在不刷新页面的情况下进行更新. ajax的主要优势是对页面的请求以异步的方式发送到服务器.而服务器不会再用整个页面 ...
- Div+CSS命名规范
注意事项:1.命名遵循驼峰式 2.尽量用中文 3.不加中杠和下划线 4.尽量不缩写,除非一看就明白的单词 头:header 标志:logo 友情链接:friendlink 内容:c ...
- 移动APP开发使用什么样的原型设计工具比较合适?
原型设计工具有Axure,Balsamiq Mockups,JustinMind,iClap原型工具,等其他原型工具.其中JustinMind比较适合APP开发使用. JustinMind可以输出Ht ...
- Thrift 2中get用法的详细解析
Thrift2相比于Thrift 1改动较大,这里不去描述改动的地方,但是它的改动确实比Thrift1方便了很多.但是不能理解的是Thrift2网上的资料和文档相当的少,就以Thrift2操作Hbas ...
- tmp
Hello 大家好,这次给大家带来的是Gear VR4代,首先我得感谢下我们的虎友Hide兄弟友情提供Gear给我们测评,感谢 感谢.之前我录的前哨战也说过,这次Gear VR 4代较3代变化并不是很 ...
- labview学习_入门篇(一)
写在前面的话: 在上大学的时候,实验室的老师推荐用labview工具编写上位机软件,当时不想用labview,感觉不写代码心里不踏实,后来用vb和matalb开发了上位机软件.但现在由于部门的几款工具 ...