前方高能莫乱入的代码审查
代码审查
前戏
又尼玛做代码审查了,每次的代码审查,特别是群审的时候,总让我有种脱光衣服,被各种彪形大汉围观揉捏的感觉,不仅围观指导,还要上下其手,研究新的体位。
遥想当年刚毕业,我那也是清纯阳光啊有木有?看到诸多前辈热心审查那也是湿了一片啊有木有?被灌下满满的心灵鸡汤,让我对前途充满无限信心啊有木有?
现如今,进进出出几百回,一朵娇羞早已怒放,不等压倒我已躺好,直叫人感概际遇无常。
审吧!
... ...
尼玛能不能别审查别人的代码,然后让我来改?能不能谁的孩子谁领回去?我不是来自马勒的戈壁老王。
代码审核就是N多处女座人围攻一个其他正常星座的人,同时也是学院风与企业风的碰撞,在代码审核闲聊过程中会涌现出无数个专家,教授,大神,以高深莫测的形态俯瞰人世间,仿佛他那双眸可以看穿万物,一切尽在掌握之中。
好吧,再吐槽我今天就不用干活了,12个代码审查问题要修改,哎,先去抽根烟,压压精。。。
其实我都不用看审查报告,我就知道有哪些审查结果,传参,注释,命名,异常,同步,调用,魔数。。。(如果奇葩,还有日志)哎,完全没有初经人事的兴奋感。。。
再怎么说每次审查都有收获,开整:
以字符串为参数考虑空指针以及空字符串
修改前:
if (bstrUrl == NULL)
{
return FALSE;
}
修改后:
// 二逼
if (bstrUrl == NULL || 0 == _tcslen(bstrUrl))
{
return FALSE;
}
// 普通
if (NULL == bstrUrl || 0 == bstrUrl[0])
{
return FALSE;
}
// 文艺
if (NULL == bstrUrl || NULL == *bstrUrl)
{
return FALSE;
}
吐槽:
算了,不说了,见惯了。
命名,改名字
哎,每一个码农心中都有一个理想的名字,用来强迫别人使用。
爱前缀,爱对称,爱回车,爱空格。。。。
已给20多个函数重命名,这加班费太好挣了。
爱改变量名的女程序员找老公一定要想好了,可别给孩子总换名字,换名字能忍,换前缀老公抽你。
前提:女程序员。
收获:
+ 千万别在函数注释里面写函数名称,没人会看,而且写代码的时候,一般都是Copy注释的,Copy...Copy...就忘了改。
+ 如果一个类的类名已经明确说明了该类要操作的对象,或许没必要在每一个接口上都写出对象的名字,eg 'CFlash::GetFlashUrl()'
自动锁AutoLock
擦泪,这个锁全局引用,需要修改几十处,哎,前人挖坑,后人中枪...
我们都是中枪的挖坑人。
两个脑洞大开的异常场景
我只是想单纯的赋个值而已,干嘛要检查这个值对不对?Who care?Who use who care!
GetWindowRect返回的矩形区域太大了怎么办????超级大的坐标对程序没有影响吗?
谁会在意坐标是不是太大?算了,增加一个有效性判断。
'CRect::NormalizeRect'这个API到是不错
// Normalizes CRect so that both the height and width are positive.
static void NormalizeRect(RECT& theRect)
{
LONG nTemp;
if (theRect.left > theRect.right)
{
nTemp = theRect.left;
theRect.left = theRect.right;
theRect.right = nTemp;
}
if (theRect.top > theRect.bottom)
{
nTemp = theRect.top;
theRect.top = theRect.bottom;
theRect.bottom = nTemp;
}
}
尼玛,补注释
非常恨不写注释的人!
切记
- 任何人的代码都会被审查出问题,别那么冷艳傲娇矫情事逼;
- 绝对不要说别人写的代码像一坨屎,说这话的人要么是吃屎了,要么是情商不高,要么是智商不高,总之,无关乎别人的代码,都是自己的能力不足以处理复杂场景;
- 如果脾气不好,能力不高,就别和其他人乱讨论问题,只管回答问题,请教问题就好。以书面形式发表意见可以让相关人专注于问题而不是人以及情绪;
- 知道任务目标,任务时间点,完成任务,结果万岁,过程去屎;
- 一周不读书,猿猴变成猪。