笨办法提高代码质量
2014-03-03 20:11
134 查看
软件中的大多Bug都与各种低级错误有关,而大多低级错误是靠测试测不出来的,更多的需要Code Review来发现问题。
培养好的习惯,不靠任何假设编程,可以先从写好每个函数开始,我想用注释驱动来提醒自己经常Review每个函数。
以下是我拟定的Code Review Comments:
每个函数都加上这么一段注释,某项review通过后把todo改成done,如果代码修改后要重新review,并修改Last Review Date。
这么玩肯定会很麻烦,但我的理念就是代码写的越慢越好,通过Check List来强制对代码进行某些思考,从而慢慢养成习惯。
比如下面这段用户登录的代码。
很明显有很多问题,然后经过review,修改如下
第一步就先做这几个基本的检查吧。
input review: 输入检查,主要是参数有效性检查,安全检查
output review:输出检查,对返回值进行契约检查,比如一个计算工资的函数,不能返回负数;
exception review: 异常检查,分两方面
一是有可能你调用的某个方法会抛出异常,你是要捕捉,还是继续往上抛;
二是你这个函数有可能会抛出什么异常,都要进行思考,做到心中有数;
null reference review: 空引用检查,你得到的某个变量,是否可能为空,空引用是最常见的低级错误;
out of bounds review: 索引越界检查,对数组和字典的使用,都有可能造成索引越界;
培养好的习惯,不靠任何假设编程,可以先从写好每个函数开始,我想用注释驱动来提醒自己经常Review每个函数。
以下是我拟定的Code Review Comments:
/* ### Code Review * ### Reviewer: wawa * ### Last Review Date: 2013-01-29 * * - todo: input review * - todo: output review * - todo: exception review * - todo: null reference review * - todo: out of bounds review * * */
每个函数都加上这么一段注释,某项review通过后把todo改成done,如果代码修改后要重新review,并修改Last Review Date。
这么玩肯定会很麻烦,但我的理念就是代码写的越慢越好,通过Check List来强制对代码进行某些思考,从而慢慢养成习惯。
比如下面这段用户登录的代码。
function login(username, password){ var account = accountDAO.getAccount(); if (account['password'] == password){ return {code:200, message:'login success.'} }else{ return {code:403, message:'login faild.'} } }
很明显有很多问题,然后经过review,修改如下
/* ### Code Review * ### Reviewer: wawa * ### Last Review Date: 2013-01-29 * * - done: input review * - done: output review * - done: exception review * - done: null reference review * - done: out of bounds review * * */ function login(username, password){ if (username === null || password === null || username === '' || password === ''){ return {code:400, message: 'input invalid'}; } try{ var account = accountDAO.getAccount(); if (account === null){ return {code:404, message: 'account not found'}; } } catch(err){ return {code:500, message: 'server error'}; } if (!('password' in account)){ return {code:500, message: 'server error'}; } if (account['password'] == password){ return {code:200, message:'login success.'} }else{ return {code:401, message:'login faild.'} } }
第一步就先做这几个基本的检查吧。
input review: 输入检查,主要是参数有效性检查,安全检查
output review:输出检查,对返回值进行契约检查,比如一个计算工资的函数,不能返回负数;
exception review: 异常检查,分两方面
一是有可能你调用的某个方法会抛出异常,你是要捕捉,还是继续往上抛;
二是你这个函数有可能会抛出什么异常,都要进行思考,做到心中有数;
null reference review: 空引用检查,你得到的某个变量,是否可能为空,空引用是最常见的低级错误;
out of bounds review: 索引越界检查,对数组和字典的使用,都有可能造成索引越界;
相关文章推荐
- Java创建线程的两个方法
- Raspbian中的OMXPlayer播放器的使用
- 《Java核心技术》复习笔记 - 第三章 Java基本的程序设计结构
- 《Java核心技术》复习笔记 - 前言
- python实现简单爬虫功能
- Part 5. Templates and Generic Programming
- Matlab判断小数有多少位
- MyEclipse经常弹出An internal error occurred during: "HTML Syntax Validator". 处理办法
- MD5加密算法--->java使用md5存储密码
- win8JAVA环境配置
- rtp
- Eclipse格式化代码时不换行与自动换行
- myeclipse快捷键ALT+/失效的解决办法
- Vim的设置和使用——编程者
- c语言
- python IDLE编程时遇到Python Error: Inconsistent indentation detected! 解决方法
- 设计模式笔记之虚拟工厂模式
- Eclipse快捷键大全
- Python学习笔记(六)—几个标准类型内建函数
- qmake 之 CONFIG 与 QT 乱谈