<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    代碼的衛(wèi)生、習(xí)慣及其它...

    最近忙,發(fā)現(xiàn)家里開(kāi)始臟亂差了。仔細(xì)想想,其實(shí)之所以會(huì)這樣,
    是因?yàn)榻?jīng)常發(fā)現(xiàn)有點(diǎn)臟的地方,也懶得動(dòng),總是想等到啥時(shí)候大掃除
    一下子全部清理干凈。后來(lái)地面越來(lái)越臟,就越來(lái)越不注意,進(jìn)入了
    一個(gè)惡性循環(huán)。

    不禁聯(lián)想到“破窗戶(hù)”理論,有個(gè)破窗戶(hù)的社區(qū),會(huì)逐漸變得不適合居住。
    又想到一個(gè)經(jīng)常看到的現(xiàn)象,如果一個(gè)電線(xiàn)桿下有一包垃圾,只要清理
    不及時(shí),過(guò)段時(shí)間,這個(gè)電線(xiàn)桿就會(huì)變成一個(gè)垃圾堆。

    扯這么多,其實(shí)想說(shuō)的是代碼的衛(wèi)生。代碼,剛開(kāi)始都是很干凈的,只是
    隨著時(shí)間推移,隨手亂扔的果皮紙屑逐漸增多,最后開(kāi)始發(fā)臭,然后這個(gè)
    代碼就沒(méi)有人愿意去碰了。在項(xiàng)目中,經(jīng)常碰到這樣的情況。同樣的功能,
    哪怕以前曾經(jīng)有人寫(xiě)過(guò),很多人還是傾向于自己重頭開(kāi)始寫(xiě)。原因是什么?
    程序員只信任自己的代碼,這是其中的一個(gè)原因。另一個(gè)原因是,以前的
    代碼確實(shí)有個(gè)需要學(xué)習(xí)上手的時(shí)間。打個(gè)比方,一間房子,不適合居住,需要
    進(jìn)行一番打掃才能住進(jìn)去,這就是已有代碼。而新的代碼,則是程序員親手
    壘起來(lái),親手裝修的,雖然耗時(shí)長(zhǎng),辛苦,但是心理感覺(jué)好。但是呢,這個(gè)
    新房子對(duì)于其它程序員來(lái)說(shuō),已經(jīng)時(shí)一個(gè)堆滿(mǎn)垃圾不適合居住的舊房子了。
    于是,每個(gè)程序員都親手建一個(gè)房子,如此重復(fù)下去。

    那么,要避免這種無(wú)意義的重復(fù)勞動(dòng),一方面是程序員本身意識(shí)的糾正。打掃
    一個(gè)舊房子,雖然臟一點(diǎn),但是通常比新建一個(gè)房子還是要快和省力。另一個(gè)
    方面,程序員應(yīng)該有這樣的信念,不能讓自己的代碼變成垃圾堆。也就是說(shuō),
    不能容忍自己的代碼中堆滿(mǎn)垃圾。

    如何避免代碼成為垃圾堆?個(gè)人認(rèn)為,就象“破窗戶(hù)”理論一樣,不能對(duì)破了
    的窗戶(hù)聽(tīng)之任之,而要盡快修復(fù)。否則的話(huà),其他人看到第一袋垃圾在這里,
    覺(jué)得扔第二袋垃圾就沒(méi)有罪惡感,至少罪惡感不那么強(qiáng)。大家可以想象一下,
    在一個(gè)窗明幾亮的環(huán)境中,你扔果皮紙屑之前都會(huì)三思。但是站在一個(gè)垃圾堆
    上面,你扔垃圾之前就不會(huì)有什么顧慮了。因此,保持衛(wèi)生的一個(gè)好習(xí)慣就是,
    不放過(guò)第一個(gè)垃圾。

    當(dāng)然,如果判別某段代碼是不是垃圾,或者及時(shí)發(fā)現(xiàn)第一段垃圾代碼,那就是
    另一個(gè)話(huà)題,例如用ut,用code review,等等。《Working Effectively with Legacy Code》
    這本書(shū)里面,提到了Legacy code 的定義:

    Code without tests is bad code. It doesn't matter how well written it is;
    it doesn't matter how pretty or object-oriented or well-encapsulated it is.
    With tests, we can change the behavior of our code quickly and verifiably.
    Without them, we really don't know if our code is getting better or worse.

    有人會(huì)覺(jué)得我管的太細(xì),不揪架構(gòu)、設(shè)計(jì),反而去管代碼,只見(jiàn)樹(shù)木不見(jiàn)森林。我個(gè)人
    的看法,架構(gòu)、設(shè)計(jì)再好,都需要代碼來(lái)進(jìn)行實(shí)現(xiàn)。如果這個(gè)基礎(chǔ)沒(méi)打好,以后這個(gè)
    代碼總是會(huì)變成無(wú)人想碰的垃圾堆。

    當(dāng)然,我也反對(duì)無(wú)意義的追求完美。我不是個(gè)有潔癖的人,所以,代碼到什么程度就算是
    干凈的了?我個(gè)人的看法是,Clean code that works。當(dāng)然這一點(diǎn)其實(shí)不容易達(dá)到,但是
    做為一個(gè)程序員,我還是努力去追求這一點(diǎn)的。

    主站: http://blogsite.3322.org/jspwiki/
    posted on 2006-04-03 10:27 SimonLei 閱讀(1086) 評(píng)論(1)  編輯  收藏
    評(píng)論
    • # re: 代碼的衛(wèi)生、習(xí)慣及其它...
      pet
      Posted @ 2006-04-06 11:13
      深有同感,最近一直在改別人的代碼,才發(fā)現(xiàn)干凈的代碼和結(jié)構(gòu)有多重要。  回復(fù)  更多評(píng)論   

    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    統(tǒng)計(jì)

    主站蜘蛛池模板: 亚洲成aⅴ人在线观看| 亚洲黄色在线视频| 免费一级特黄特色大片| 日本xxwwxxww在线视频免费| 国产成人精品亚洲日本在线| 天天影院成人免费观看| 亚洲人成网站在线观看播放动漫 | 色爽黄1000部免费软件下载| 国产在线观看www鲁啊鲁免费| 亚欧在线精品免费观看一区| 亚洲午夜精品一区二区| 57pao国产成视频免费播放| 亚洲白嫩在线观看| a毛片基地免费全部视频| 亚洲熟妇无码AV不卡在线播放| 日韩视频免费一区二区三区| 免费人成大片在线观看播放电影| 亚洲精品国产自在久久 | 精品国产亚洲男女在线线电影| 一区二区免费国产在线观看| 久久久无码精品亚洲日韩软件| 女人隐私秘视频黄www免费| 亚洲精品成人av在线| 日本h在线精品免费观看| 亚洲欧美成人av在线观看| 国产美女无遮挡免费视频| 精品97国产免费人成视频| 久久久久亚洲AV片无码下载蜜桃| 97免费人妻无码视频| 黄网站色视频免费观看45分钟| 亚洲午夜福利717| 青青青国产在线观看免费网站| 亚洲国产AV无码专区亚洲AV| 色欲国产麻豆一精品一AV一免费| 亚洲精品第一国产综合境外资源| 国产精品永久免费视频| 亚洲精品美女久久久久9999| 成年女人永久免费观看片| 免费国产成人午夜在线观看| 亚洲性线免费观看视频成熟| 4338×亚洲全国最大色成网站|