偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

不要浪費(fèi)時(shí)間去寫所謂的完美代碼

開發(fā) 后端 前端
通過研究代碼如何隨時(shí)間變化,Michael Feathers 確定了代碼庫的功率曲線。每個(gè)系統(tǒng)都有代碼,通常而言里面的很多很多代碼,一次寫好之后就永遠(yuǎn)不會(huì)變了的。但是還是有少量的代碼,包括最重要和最有用的代碼,會(huì)被一遍又一遍地改動(dòng)、重構(gòu)甚至是重頭開始重寫。

 

一般而言,一個(gè)系統(tǒng)能用 5 年、10 年,甚至 20 年以上。但是某特定代碼行以及某特定設(shè)計(jì)則往往比較短:當(dāng)我們使用了不同的解決方法,其生命周期可能就只有幾個(gè)月、幾天,甚至是幾秒種的時(shí)間。

有的代碼就是比其他代碼更重要

通過研究代碼如何隨時(shí)間變化,Michael Feathers 確定了代碼庫的功率曲線。每個(gè)系統(tǒng)都有代碼,通常而言里面的很多很多代碼,一次寫好之后就永遠(yuǎn)不會(huì)變了的。但是還是有少量的代碼,包括最重要和最有用的代碼,會(huì)被一遍又一遍地改動(dòng)、重構(gòu)甚至是重頭開始重寫。

隨著你對(duì)系統(tǒng)、問題領(lǐng)域以及架構(gòu)方法方面經(jīng)驗(yàn)的增長(zhǎng),就更加容易知道和預(yù)測(cè)什么代碼總是需要改動(dòng)的,什么代碼是永遠(yuǎn)不會(huì)變的:有的代碼就是比其他代碼更重要。

我們是否應(yīng)該寫***代碼?

我們知道,我們應(yīng)該寫干凈的代碼,一致的、易于理解的且越簡(jiǎn)單越好的代碼。

有些人因此而走向了一個(gè)極端,強(qiáng)迫自己盡可能地編寫美麗優(yōu)雅趨于***的代碼,著魔于重構(gòu),可著勁兒折騰每一個(gè)細(xì)節(jié)。

有的代碼只需要寫一次,以后就再也不需要作任何變動(dòng)。但有些代碼則并非如此,試想,這些需要不斷改變的代碼,代碼寫得那么***卻在下一秒就立馬被 delete 不就太過浪費(fèi)了嗎?而且也沒有必要這么做。

“你不用去寫所謂***的軟件。不是禁止你,只是真的沒有這個(gè)必要。好好想想,接受這個(gè)話。你需要明白***的軟件其實(shí)是不存在的。計(jì)算機(jī)發(fā)展到今天還沒有人寫的軟件是***的。你也不要自以為是地想去做***個(gè)。除非你能接受這個(gè)事實(shí),否則你最終只會(huì)是在浪費(fèi)時(shí)間和精力,如果你想追求這個(gè)不可能實(shí)現(xiàn)的夢(mèng)想。”

——Andrew Hunt,《The Pragmatic Programmer: from Journeyman to Master》的作者

一次就能解決的代碼也不需要美麗和優(yōu)雅,只要保證是正確的、容易理解的即可——因?yàn)檫@些不變的代碼可能以后還要被多次讀取。也不必非要是干凈和緊密的——只需要干凈即可。復(fù)制和粘貼等快捷方式在這類代碼上是被允許的,至少在一定程度上可以這么做。這些代碼不需要再重構(gòu)(除非你需要改變這些代碼),即使它周圍的其他的代碼一直在變化中??傊痪湓?,這些代碼不值得我們?cè)谒砩匣ㄙM(fèi)額外的時(shí)間。

至于那些一直在變化的代碼?苦苦思索***雅的解決方案純粹是在浪費(fèi)時(shí)間,因?yàn)檫@段代碼很可能在幾天或者幾周后就會(huì)被改寫,甚至重寫。

所以我們要關(guān)注的重點(diǎn)是:這些代碼是否如愿運(yùn)行——是否正確、實(shí)用和高效?是否能處理異常數(shù)據(jù)而不崩潰?——或者至少是否能做到即使失敗也不會(huì)出問題?是否容易調(diào)試?是否能簡(jiǎn)單安全地改變?這些實(shí)實(shí)在在的措施才是成功與失敗之間的分水嶺。

編碼與重構(gòu)要?jiǎng)?wù)實(shí)

精益開發(fā)的核心思想是:不要浪費(fèi)時(shí)間去做那些不重要的事情,包括寫代碼、重構(gòu)、代碼審查以及代碼測(cè)試等多個(gè)方面。

只需要重構(gòu)真正需要的部分就足夠了——這也被 Martin Flower 稱之為是機(jī)會(huì)主義的重構(gòu)和有準(zhǔn)備的重構(gòu)。

關(guān)于代碼審查也只需要專注于重要部分。這些代碼是否正確?是否安全?是否可以運(yùn)行?

不要在意風(fēng)格(除非風(fēng)格本身妨礙了我們的理解)。讓 IDE 做主,格式化的照顧就 ok 了。我們不必去討論代碼還能不能更 OO,也不必一定要遵循某種樣式,喜歡與否也沒有關(guān)系,是否能用更好的方式解決也不重要——除非是你在教新手,并且需要做一些指導(dǎo)作為代碼審查的一部分。

測(cè)試也要挑關(guān)鍵的來。測(cè)試要覆蓋主要途徑和重要的異常情況。無論是大型測(cè)試還是小而集中的測(cè)試,無論是寫在代碼之前還是之后,只要能起到作用就成。

這不僅僅是代碼問題

軟件開發(fā)總是在不斷地更新迭代。哪怕現(xiàn)在看它的設(shè)計(jì)和代碼是正確的,但是一段時(shí)間之后,它就會(huì)被要求改變或者直接被其他更好的所替代。

我們需要編寫優(yōu)良的代碼:易于理解、正確以及安全。我們?cè)谥貥?gòu)和審查代碼、編寫有用的測(cè)試的同時(shí)也需要謹(jǐn)記:有些代碼或者甚至是所有的這些代碼,在不久的將來是要被拋棄的,或者永遠(yuǎn)也不會(huì)再被讀取,或者再也不會(huì)被使用了。我們必須意識(shí)到,我們現(xiàn)在的一些工作將會(huì)成為無用功。做需要做的事情,僅此就夠了。不要浪費(fèi)時(shí)間去寫所謂的***代碼。

英文原文:Don't Waste Time Writing Perfect Code

責(zé)任編輯:林師授 來源: 碼農(nóng)網(wǎng)
相關(guān)推薦

2017-09-25 21:00:44

代碼開發(fā)完美

2016-01-22 11:51:36

測(cè)試浪費(fèi)時(shí)間

2016-01-25 09:35:23

測(cè)試程序

2009-02-26 10:29:46

時(shí)間工作

2014-08-15 10:33:57

編程效率項(xiàng)目經(jīng)理

2020-12-18 12:14:44

PythonR語言數(shù)據(jù)科學(xué)

2020-12-14 10:22:50

開發(fā)開源安全

2017-07-10 14:58:23

JavaScript代碼風(fēng)格寫作準(zhǔn)則

2016-10-31 20:02:21

WordPress網(wǎng)站數(shù)據(jù)集大數(shù)據(jù)轉(zhuǎn)型戰(zhàn)略

2020-04-30 10:27:40

廣告攔截器開源

2022-07-06 08:39:33

Python代碼

2022-06-08 10:10:00

軟件設(shè)計(jì)設(shè)計(jì)文檔需求設(shè)計(jì)

2017-01-17 16:09:25

2012-03-28 22:06:15

Android

2022-06-06 06:00:00

開源無代碼測(cè)試工具

2022-04-28 08:24:16

阿里云idaaspython

2012-01-06 09:45:59

敏捷開發(fā)

2022-03-31 14:13:52

云計(jì)算PaaSIT

2012-04-01 15:01:17

2012-03-28 09:48:45

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)