關(guān)于代碼Review

在一個(gè)項(xiàng)目組里面频伤,經(jīng)常會(huì)互相review同事的代碼吹由,review的過程中相信會(huì)產(chǎn)生不少矛盾是牢,這篇文章記錄一下我對(duì)代碼review的一些看法复濒。首先是編碼規(guī)范的問題昵时,拿PHP來說汉买。比如命名規(guī)范瓷蛙,indent之類的即寡。這些都應(yīng)該在項(xiàng)目編碼開始之前大家立好規(guī)矩修然。是采用駝峰命名法還是用下劃線分割單詞笛钝,indent?是用tab還是用空格质况,大括號(hào)是換行:

function foo() {
}

還是不換行:

function foo() 
{
}

這些最基礎(chǔ)格式規(guī)范一定要在最開始寫在一個(gè)wiki文檔上,項(xiàng)目組所有成員都需要熟記這個(gè)規(guī)范玻靡。這種規(guī)范结榄,兩上個(gè)技術(shù)骨干定一下就好了,定下來就按它執(zhí)行囤捻。這個(gè)東西其實(shí)只要統(tǒng)一就好臼朗,無需糾結(jié),孰好孰壞也并不影響項(xiàng)目質(zhì)量蝎土。

接下來我說一下我對(duì)關(guān)于一些實(shí)現(xiàn)邏輯的寫法review的個(gè)人理解视哑,比較經(jīng)典的是關(guān)于 if...else...?的用法的討論。如果一個(gè)函數(shù)中用if...else來做分支處理誊涯,代碼如下:

if($flag = 1)
{
    .....
    $result = 'A';
}else if($flag = 2) {
    .....
    .....
    $result = 'B';
}else {
    .....
    .....
    $result = 'C';
}

.....
.....
return $result;

這種情況挡毅,如果if...else語句下面的處理跟邏輯跟結(jié)果A或者B沒有什么關(guān)系的話 ,可以改寫成如下代碼醋拧,使得代碼邏輯更加清晰

if($flag = 1)
{
    .....
    return 'A';
}
if($flag = 2) {
    .....
    .....
    return 'B';
}
.....
.....

.....
.....
return 'C';

簡單一句話就是慷嗜,適當(dāng)?shù)娜サ鬷f...else而換成if return結(jié)構(gòu),很多時(shí)候可以提高程序的可讀性丹壕,但也不能認(rèn)準(zhǔn)這個(gè)死道理庆械,比如下面這段(形式A)代碼

    function foo($flag) {
        if($flag) {
            $var = 'A';
        }else {
            $var = 'B';
        }

        ....
    }

我的同事review的時(shí)候建議改成如下(形式B):

    function foo($flag) {
        $var = 'B';
        if($flag) {
            $var = 'A';
        }
        ....
    }

這其實(shí)并沒有意義,首先這并沒有增加程序的可讀性菌赖,其次形式A的代碼其實(shí)更符合人類的思維缭乘,它表述出$var變量非A既B的邏輯,而下面的代碼表述的是$var變量的默認(rèn)值是A琉用,當(dāng)flag為true的時(shí)候它被賦值B堕绩,給人一種它可能還會(huì)有其他情況被賦值為C、D ... 之類的值的預(yù)期邑时。

所以在review代碼的時(shí)候不能教條(簡單的認(rèn)為只要去掉else代碼就會(huì)變得更簡單易讀)奴紧,review需要關(guān)注的點(diǎn)應(yīng)該是是否有邏輯漏洞,潛在BUG晶丘,非常小可能性出現(xiàn)的異常沒有處理黍氮。而對(duì)于代碼的表述方式,不應(yīng)該過多關(guān)注浅浮。所以反之若是有人寫了形式B的代碼沫浆,也沒有必要在review的時(shí)候,讓他改成形式A滚秩。如果review的這么仔細(xì)专执,不但不會(huì)提高代碼質(zhì)量,反而會(huì)大大減慢項(xiàng)目的開發(fā)進(jìn)度郁油,增加溝通成本本股。

所以攀痊,review這件事,要有度拄显!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蚕苇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子凿叠,更是在濱河造成了極大的恐慌涩笤,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盒件,死亡現(xiàn)場(chǎng)離奇詭異蹬碧,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)炒刁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門恩沽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人翔始,你說我怎么就攤上這事罗心。” “怎么了城瞎?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵渤闷,是天一觀的道長。 經(jīng)常有香客問我脖镀,道長飒箭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任蜒灰,我火速辦了婚禮弦蹂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘强窖。我一直安慰自己凸椿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布翅溺。 她就那樣靜靜地躺著脑漫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪未巫。 梳的紋絲不亂的頭發(fā)上窿撬,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天启昧,我揣著相機(jī)與錄音叙凡,去河邊找鬼。 笑死密末,一個(gè)胖子當(dāng)著我的面吹牛握爷,可吹牛的內(nèi)容都是我干的跛璧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼新啼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼追城!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起燥撞,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤座柱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后物舒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體色洞,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年冠胯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了火诸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡荠察,死狀恐怖置蜀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情悉盆,我是刑警寧澤盯荤,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站焕盟,受9級(jí)特大地震影響廷雅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜京髓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一航缀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧堰怨,春花似錦芥玉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至揽涮,卻和暖如春抠藕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蒋困。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國打工盾似, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人雪标。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓零院,卻偏偏與公主長得像溉跃,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子告抄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,118評(píng)論 25 707
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法撰茎,類相關(guān)的語法,內(nèi)部類的語法打洼,繼承相關(guān)的語法龄糊,異常的語法,線程的語...
    子非魚_t_閱讀 31,631評(píng)論 18 399
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程募疮,因...
    小菜c閱讀 6,414評(píng)論 0 17
  • 中國绎签,1978年改革開放,1992年正式實(shí)施市場(chǎng)經(jīng)濟(jì)酝锅,2001年加入世界貿(mào)易組織诡必,時(shí)至今日,我們的生活已經(jīng)從改革開...
    喜歡思考閱讀 2,304評(píng)論 1 2
  • 孟子曰:吾善養(yǎng)吾浩然之正氣搔扁。修身者爸舒,需內(nèi)養(yǎng)精氣神,以通天地之陰陽混元能量稿蹲,與萬物為一也扭勉。 1 靜坐:靜以修身...
    十年一井閱讀 340評(píng)論 0 0