整洁代码系列(1)
1、首先我們必須要了解糟糕的代碼會(huì)導(dǎo)致什么問題?
- 越糟糕的代碼,別人理解的時(shí)間就越長(zhǎng),會(huì)導(dǎo)致進(jìn)度嚴(yán)重滯后(代碼不僅僅是寫給自己看的,除了自己,團(tuán)隊(duì)的其他成員也需要在必要的時(shí)候去理解);
- 越糟糕的代碼,每次添加或修改代碼,如果再不改變?cè)愀庑袨榈那疤嵯?#xff0c;代碼回越來越爛,再也無法理清,最后會(huì)束手無策;
- 隨著混亂的增加,團(tuán)隊(duì)的生產(chǎn)力會(huì)持續(xù)的下降,最后趨向于零。
- 當(dāng)生產(chǎn)力下降時(shí),管理層只會(huì)做一件事,就是增加更多的人手到項(xiàng)目中,期望提升生產(chǎn)力,可是新人并不熟悉系統(tǒng)的設(shè)計(jì),但卻背負(fù)著提升生產(chǎn)力的可怕壓力,于是,有可能會(huì)知道出更多的混亂。
2、那什么是整潔的代碼呢?是否有一定的標(biāo)準(zhǔn)呢?
這個(gè)是沒有的,每個(gè)人都有自己整潔代碼的標(biāo)準(zhǔn)呢,我們不妨可以來看看一些非常知名且經(jīng)驗(yàn)豐富的程序員是怎么說的?
(1)我喜歡優(yōu)雅和高效的代碼。代碼邏輯應(yīng)當(dāng)直截了當(dāng),叫缺陷難以隱藏;盡量減少依賴關(guān)系,使之便于維護(hù);依據(jù)某種分層戰(zhàn)略完善錯(cuò)誤處理代碼;性能調(diào)至最優(yōu),省得引誘別人做沒規(guī)矩的優(yōu)化,搞出一堆混亂來。整潔的代碼只做好一件事。--Bjarne Stroustrup,C++語言發(fā)明者
(每個(gè)函數(shù),每個(gè)類和每個(gè)模塊都全神貫注于一件事,完全不受四周細(xì)節(jié)的干擾和污染)。
(2)整潔的代碼簡(jiǎn)單直接。整潔的代碼如同優(yōu)美的散文。整潔的代碼從不隱藏設(shè)計(jì)者的意圖,充滿了干凈利落的抽象和直截了當(dāng)?shù)目刂普Z句。--Grady Booch,Object Oriented Analysis and Design with Applications(中譯版《面向?qū)ο蠓治雠c設(shè)計(jì)》)一書作者。
? (代碼應(yīng)當(dāng)講述事實(shí),不引人猜測(cè),它只該包含必需之物。讀者應(yīng)當(dāng)感受到我們的果斷決絕)。
(3)整潔的代碼應(yīng)可由作者之外的開發(fā)者閱讀和增補(bǔ)。它應(yīng)當(dāng)有單元測(cè)試和驗(yàn)收測(cè)試。它使用有意義的命名。它只提供一種而非多種做一件事的途徑。它只有盡量少的依賴關(guān)系,而且要明確地定義和提供清晰、盡量少的API。代碼應(yīng)通過其字面表達(dá)含義,因?yàn)椴煌恼Z言導(dǎo)致并非所有必需信息均可通過代碼自身清晰表達(dá)。 --Dave Thomas,OTI公司創(chuàng)始人,Eclipse戰(zhàn)略教父
(增補(bǔ)一詞,說明了整潔的代碼要具有可擴(kuò)展性;目前而言,測(cè)試驅(qū)動(dòng)開發(fā)已經(jīng)在行業(yè)中有深遠(yuǎn)影響,沒有測(cè)試的代碼是不干凈的,不管它有多優(yōu)雅、多可讀、多易于理解,微于測(cè)試,其不潔亦可知道)。
(4)簡(jiǎn)單代碼,依其重要順序:
能通過所有測(cè)試;
沒有重復(fù)代碼;
體現(xiàn)系統(tǒng)中的全部設(shè)計(jì)理念;
包括盡量少的實(shí)體,比如類、方法、函數(shù)等。
----Ron Jeffries,Extreme Programming Installed(中譯版《極限編程實(shí)施》)以及Extreme Programming Adventures in C#(中譯版《C#極限編程探險(xiǎn)》)作者。
(減少重復(fù)代碼,提高表達(dá)力,提早構(gòu)建簡(jiǎn)單抽象。這就是寫整潔代碼的方法)。
(5)如果每個(gè)例程都讓你感到深合己意,那就是整潔代碼。如果代碼讓編程語言看起來像是專為解決那個(gè)問題而存在,就可以稱之為漂亮的代碼。--Ward Cunningham,Wiki發(fā)明者,eXtreme Programming(極限編程)的創(chuàng)始人之一,Smalltalk語言和面向?qū)ο蟮乃枷腩I(lǐng)袖。所有在意代碼者的教父。
(你可以想想最近一次看到深合己意的模塊是什么時(shí)候,其實(shí)整潔的程序好到你根本不會(huì)注意到它,設(shè)計(jì)者把它做得像一切其他設(shè)計(jì)般簡(jiǎn)單)。
3、童子軍軍規(guī)
美國(guó)的童子軍有一條簡(jiǎn)單的軍規(guī),就是“讓營(yíng)地比你來時(shí)更干凈”,這完全可以應(yīng)用到我們的專業(yè)領(lǐng)域:代碼每次簽入時(shí),都要比簽出時(shí)干凈才行,這樣子代碼就不會(huì)腐壞,如果不能時(shí)時(shí)刻刻的保持代碼整潔,隨著時(shí)間的流逝,代碼必將腐壞,因?yàn)椴缓玫拇a會(huì)“代代相傳”(傳說中的破窗效應(yīng))。
轉(zhuǎn)載于:https://www.cnblogs.com/Helius/p/6392313.html
總結(jié)
- 上一篇: ndarray的数据类型
- 下一篇: can与could区别