日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
大牛談代碼異味如何清除

為什么我們需要有質(zhì)量的代碼?

公司主營(yíng)業(yè)務(wù):做網(wǎng)站、網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)推出吉州免費(fèi)做網(wǎng)站回饋大家。

敏捷開發(fā)方法是用來(lái)應(yīng)付那些要求代碼做大量改動(dòng)的反饋信息的方法。

如果程序沒(méi)有用一種好的表達(dá)方式來(lái)表現(xiàn),那程序會(huì)很難讀,難維護(hù),難修改。

什么是代碼異味?

代碼異味是一種由寫的很差的代碼引起的一種有臭味的感覺(jué),一種程序什么地方會(huì)有問(wèn)題的感覺(jué)

異味更多的是來(lái)自一種直覺(jué),而不是一種有據(jù)可查的標(biāo)準(zhǔn),當(dāng)你看到有味的代碼時(shí)你就“感覺(jué)”到了

如果你不把異味清除,不久之后你就會(huì)習(xí)慣這種氣味,不再對(duì)它有察覺(jué)

用任何語(yǔ)言都能寫出有異味的代碼:即使最簡(jiǎn)單安全的語(yǔ)言,你也能做出天才才能想出的蠢事:)

我們經(jīng)常會(huì)意識(shí)不到自己在寫很臭的代碼,經(jīng)常需要外人為我們指出這點(diǎn)

邊注:如果你不想刻意去批評(píng)某人的程序,不要說(shuō)“太愚蠢了”,要說(shuō)“哦,這很有意思…。可有一種更好的方法你知道嗎”

重復(fù)的代碼

會(huì)引起程序里面多個(gè)地方相同的錯(cuò)誤

印度小伙:每?jī)蓚€(gè)月我們都會(huì)把這相同的錯(cuò)誤修改一次

Venkat:你們?nèi)サ袅酥貜?fù)的代碼了嗎?

印度小伙:你說(shuō)的這個(gè)方法不錯(cuò)!

不必要的復(fù)雜

程序員本質(zhì)上講高興去處理復(fù)雜的問(wèn)題

復(fù)雜最恐怖

異常處理

問(wèn):有什么比一個(gè)空的異常捕捉代碼更糟糕的?

try{... } catch (Exception e){}

答:一個(gè)帶有注釋的空異常捕捉代碼!

try{... } catch (Exception e){// is this required? }

Java的異常檢查:好還是不好?

如果你不想處理一個(gè)異常,就把它傳遞下去

如果你想捕捉兩個(gè)異常,使用兩個(gè)catch代碼,不要只寫一個(gè)而用If條件處理

Switch語(yǔ)句& 按類型的條件判斷

Switch語(yǔ)句和按類型的條件判斷通??梢杂枚嘈涡詠?lái)代替

長(zhǎng)方法

你不能在一屏上看到整個(gè)方法

這通常意味著一個(gè)方法承擔(dān)這多重任務(wù)

難于調(diào)試

不可測(cè)試

難于重用-> 導(dǎo)致程序員從方法的其它地方拷貝粘貼出重復(fù)的代碼

復(fù)雜的條件語(yǔ)句-> 挑戰(zhàn)大腦的邏輯分析能力

方法長(zhǎng)度:組織歸納水平比控制代碼行數(shù)更重要

方法組成模式

方法里的所有語(yǔ)句都必須處在同一個(gè)歸納層次上

無(wú)用的注釋

讓代碼自我表白

標(biāo)注為什么這樣,而不是如何這樣

對(duì)方法表現(xiàn)進(jìn)行描述等于重復(fù)表現(xiàn)

這樣的注釋等于重復(fù)寫一遍代碼

i += 1 //遞增

長(zhǎng)方法里用來(lái)描述這個(gè)方法有不同的功用的注釋

把里面的功能片段提取成小方法& 刪除注釋

IDE排泄物:IDE自動(dòng)產(chǎn)生的注釋空白占位符

糟糕的注釋通常產(chǎn)生于TDD*

*(TDD:Threat driven development,恐嚇驅(qū)動(dòng)開發(fā))——你應(yīng)該為方法的表象寫注釋,你應(yīng)該為長(zhǎng)方法寫注釋,等

產(chǎn)品里的注釋:

//上帝保佑,我實(shí)在不知道這是什么意思

變量名稱

使用能表意的名稱

不要用單個(gè)字母做名稱

也不要使用太長(zhǎng)的名稱

繼承

繼承更多的是被濫用了

組合通常優(yōu)于繼承

在一對(duì)一關(guān)系中使用繼承,滿足Liskov替換原則

不要用繼承來(lái)實(shí)現(xiàn)方法重用

重用方法時(shí),委托是個(gè)更好的選擇

粘手的語(yǔ)言

這種語(yǔ)言更容易導(dǎo)致犯錯(cuò)誤

最臭的代碼

冗長(zhǎng)的類

重復(fù)的代碼

淘汰的方法

不必要的塑型(cast)

過(guò)度使用設(shè)計(jì)模式

代碼除味

代碼復(fù)查!

寫出之后盡快進(jìn)行

要增量進(jìn)行

要復(fù)查測(cè)試用例

可使用結(jié)對(duì)編程

但要保持結(jié)對(duì)伙伴的經(jīng)常變動(dòng),否則你會(huì)習(xí)慣你的氣味,不再會(huì)有察覺(jué)

結(jié)對(duì)伙伴一、兩天調(diào)換一次

一些設(shè)計(jì)原則

高聚合

低耦合

Demeter定律 [不要告訴我,我會(huì)通知你]

Liskov替換原則

先讓它跑起來(lái),再讓它無(wú)誤,再讓它快速

開發(fā)/閉合原則

反向依賴

單一責(zé)任原則

問(wèn)和答

關(guān)于使用代碼檢測(cè)工具,例如PMD:這樣的工具非常的有用,它能讓你捕捉到很直接的問(wèn)題,使你的代碼復(fù)查工作專注于高層面的設(shè)計(jì)原則問(wèn)題

關(guān)于IDE上附加的工具:不要自己去運(yùn)行它們。讓這些工具在后臺(tái)自動(dòng)的運(yùn)行(或智能化)

動(dòng)態(tài)語(yǔ)言里需要重構(gòu)嗎:動(dòng)態(tài)語(yǔ)言里沒(méi)有太多的自動(dòng)重構(gòu)工具,但程序員仍然應(yīng)該手動(dòng)的重構(gòu)

關(guān)于動(dòng)態(tài)語(yǔ)言的設(shè)計(jì)模式:每種語(yǔ)言都有自己的模式和特色。例如:smalltalk的execute around method模式

關(guān)于掌握多種語(yǔ)言

你應(yīng)該知道處理一個(gè)問(wèn)題的多種范式,多種風(fēng)格和多種方式

一種語(yǔ)言中學(xué)到的特色方法應(yīng)用到其它語(yǔ)言里

知道各種不同方式的各自風(fēng)險(xiǎn)

關(guān)于編程語(yǔ)言趨勢(shì):對(duì)函數(shù)性編程,移動(dòng)設(shè)備編程興趣濃厚

關(guān)于著書:長(zhǎng)時(shí)間的思考書中的各項(xiàng)主題,多做這方面話題的討論,吸取精華。當(dāng)開始動(dòng)手去寫時(shí),已經(jīng)胸有成竹,2周內(nèi)把書寫成

關(guān)于思考文獻(xiàn):思考文獻(xiàn)很有用,但你也要多看看批評(píng)性的思考性文章,它們是關(guān)于你如何去思考的(double loop learning?)

關(guān)于學(xué)習(xí):在用戶組里跟其它人合作,交流,討論。你并不能學(xué)到所有的東西,但要努力縮小自己的“你不知道你不知道的東西”,讓它成為“你知道你不知道的”

原文鏈接:http://www.aqee.net/2011/05/18/cleaning-up-code-smells/

【編輯推薦】

  1. 敏捷教練都該下課——Fred George訪談錄
  2. 50萬(wàn)行代碼的項(xiàng)目如何去讀經(jīng)驗(yàn)分享
  3. 想成為更好的程序員嗎?學(xué)習(xí)Prolog語(yǔ)言吧
  4. 老程序員10年技術(shù)生涯的思考 從C++到Java
  5. 程序員如何在"小公司成長(zhǎng)"和"大公司學(xué)習(xí)"

分享標(biāo)題:大牛談代碼異味如何清除
網(wǎng)站地址:http://m.5511xx.com/article/cdgepjp.html