个人博客作业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.我是个艺术家,手艺人,我有 ...
随机推荐
- PowerDesginer 生成的Oracle 11g 组合触发器代码编译错误(29): PLS-00103
问题描述: 采用PowerDesigner15针对Oracle 11g 创建物理数据模型,想实现一个字段的自增,采用如下步骤: 1.创建序列,命名为Sequence_1; 2.在自增字段编辑窗口中,选 ...
- 预习笔记 多态 --S2 4.3
第三章 多态 polymorphism 多态 instance 例子override 重载 constructor 构造器ClassCastException 类型转换异常upcasting 上抛 d ...
- C++STL学习笔记_(1)vector知识
#include<iostream> using namespace std; #include "vector" //数组元素的 添加和删除 void main31( ...
- ubuntu pip 安装django报错解决
系统版本 ubuntu Kylin 16.04 LTS 安装pip3 安装 Django 总是提示time out,无法安装. 逛了好多论坛终于遭到了解决办法,分享保存: sudo pi ...
- Window下Qt Creator启动错误解决方法
很多电脑现在都是用的是双显卡,高性能的独显和性能比较差但耗电少的集显,在Window10系统下右键点击软件,在"图形处理器"里面可以选择使用什么显卡操作此软件.下面是我在运行Qt ...
- oracle java SE
http://www.oracle.com/technetwork/java/javase/downloads/index.html
- 自定义View的学习(一) 自绘制控件
一.自绘控件 就是自己绘制的控件,通过onDraw()方法将控件绘制出来 自定义一个可点击的View 这个View可以记住用户点击的次数 public class CounterView exte ...
- asp.net web api集成微信服务(使用Senparc微信SDK)
/// <summary> /// 微信请求转发控制器 /// </summary> [RoutePrefix("weixin")] public clas ...
- POJ 3041 Asteroids 二分图匹配
以行列为点建图,每个点(x,y) 对应一条边连接x,y.二分图的最小点覆盖=最大匹配 //#pragma comment(linker, "/STACK:1024000000,1024000 ...
- RHEL7.2
在RHEL7.2中,通过以下命令设置开机进入图形界面或者命令行界面: systemctl set-default graphical.target #设置开机默认进入图形界面 systemctl se ...