前方高能莫乱入的代码审查

代码审查

前戏

又尼玛做代码审查了,每次的代码审查,特别是群审的时候,总让我有种脱光衣服,被各种彪形大汉围观揉捏的感觉,不仅围观指导,还要上下其手,研究新的体位。

遥想当年刚毕业,我那也是清纯阳光啊有木有?看到诸多前辈热心审查那也是湿了一片啊有木有?被灌下满满的心灵鸡汤,让我对前途充满无限信心啊有木有?

现如今,进进出出几百回,一朵娇羞早已怒放,不等压倒我已躺好,直叫人感概际遇无常。

审吧!

... ...

尼玛能不能别审查别人的代码,然后让我来改?能不能谁的孩子谁领回去?我不是来自马勒的戈壁老王。

代码审核就是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;
    }
}

尼玛,补注释

非常恨不写注释的人!

切记

  1. 任何人的代码都会被审查出问题,别那么冷艳傲娇矫情事逼;
  2. 绝对不要说别人写的代码像一坨屎,说这话的人要么是吃屎了,要么是情商不高,要么是智商不高,总之,无关乎别人的代码,都是自己的能力不足以处理复杂场景;
  3. 如果脾气不好,能力不高,就别和其他人乱讨论问题,只管回答问题,请教问题就好。以书面形式发表意见可以让相关人专注于问题而不是人以及情绪;
  4. 知道任务目标,任务时间点,完成任务,结果万岁,过程去屎;
  5. 一周不读书,猿猴变成猪。