2021-02-23 分類: 網(wǎng)站建設(shè)
想要作為優(yōu)秀的程序員必須遵守一些不成文的規(guī)定。本文不是在討論算法、數(shù)據(jù)結(jié)構(gòu)、軟件架構(gòu)和程序設(shè)計(jì),而是在討論一些更基本、更重要的東西:可讀性。
源代碼是程序員耗盡了心血和精力的作品,所以不應(yīng)當(dāng)存在“快刀斬亂麻”的現(xiàn)象。忽視這些規(guī)定看似讓代碼生成速度加快,但事實(shí)上往往導(dǎo)致事倍功半。
代碼敲一次,閱讀無數(shù)次。因此,優(yōu)化代碼提高可讀性顯得尤為重要。為了幫助生成高度可讀的代碼,本文歸納總結(jié)了必須遵守的3個(gè)重要規(guī)定。遵循這些規(guī)則可以幫助使用代碼的人員維護(hù)、擴(kuò)展和調(diào)整代碼。此外,可讀性高的代碼更不容易出錯(cuò)。
這三個(gè)技巧最好的地方在于:可以立即實(shí)現(xiàn)。不需要訓(xùn)練時(shí)間。僅僅需要幾分鐘就能蛻變成更優(yōu)秀的程序員!
使用描述性的變量和函數(shù)名
程序代碼往往包含上千單詞。當(dāng)然,也有篇幅較短的代碼。使用自解釋變量和函數(shù)名使代碼更容易閱讀、理解、維護(hù)和后續(xù)擴(kuò)展。舉個(gè)例子:
在編寫這段代碼時(shí),開發(fā)人員確切地知道要實(shí)現(xiàn)的是哪種功能。但是,其他人能理解嗎?這就要看靈感和緣分了。開發(fā)人員可以添加一條注釋來描述這段代碼的用途,但是使用描述性變量名能夠更直觀地告訴讀者相關(guān)信息,比如:
看!現(xiàn)在是不是更容易理解了。僅通過使用描述性變量名,讀者就可以立即了解該代碼能將華氏溫度(Fahrenheit)轉(zhuǎn)換為攝氏溫度(Celsius)?,F(xiàn)在定義一個(gè)函數(shù)實(shí)現(xiàn)上述代碼功能,并觀察根據(jù)函數(shù)名和參數(shù)名對(duì)可讀性的影響程度。
“簡(jiǎn)短”版:
“細(xì)節(jié)補(bǔ)充”版:
很明顯:比起只用單個(gè)字母表示變量和函數(shù)名的“簡(jiǎn)短”版,“細(xì)節(jié)補(bǔ)充”版需要花費(fèi)更多的打字時(shí)間。
但是,理解這兩個(gè)版本的代碼又需要多長(zhǎng)時(shí)間呢? 自解釋代碼不僅為讀者節(jié)省了許多理解代碼的時(shí)間,同時(shí)也為開發(fā)人員節(jié)省大量時(shí)間。為了更改程序細(xì)節(jié)或者編寫拓展程序,開發(fā)人員經(jīng)常需要回顧數(shù)月前編寫的代碼。然后就一臉懵的看著屏幕:“我滴個(gè)神啊,我都寫了啥?任何可以優(yōu)化閱讀性的方法都值得付出額外的打字時(shí)間。
使用適當(dāng)?shù)目s進(jìn)
因?yàn)镚uido van Rossum 決定在他設(shè)計(jì)的Python編程語言中強(qiáng)制執(zhí)行縮進(jìn),所以使用Python進(jìn)行編程的讀者可以跳過本節(jié)。
如果使用的是如C、C++、Java、JavaScript、PHP、C#、PHP等其他受眾良多的編程語言,那么牢記這條技巧:
按層次縮進(jìn)代碼。
可以使用制表符或者空格,空格按3次或者按4次也可按照開發(fā)人員的喜好而定。只要記住縮進(jìn)在編程中是必須的就OK了。接下來通過比較一些JavaScript代碼來進(jìn)一步說明。這段代碼:
沒有縮進(jìn)的版本:
有縮進(jìn)的版本:
代碼中還添加了一些空白行來進(jìn)一步結(jié)構(gòu)化代碼。這兩段代碼中哪個(gè)的可讀性更高呢?
恰當(dāng)?shù)厥褂煤瘮?shù)
通過使用函數(shù)可以構(gòu)建可重復(fù)使用的代碼塊。這些還可以使代碼更結(jié)構(gòu)化、更具可讀性和可理解性。能夠避免重復(fù)的代碼是函數(shù)最重要的特性。
定義函數(shù)(或類、模塊等等,這取決于使用哪種編程語言)可以解決在代碼庫中多次出現(xiàn)相同的代碼段的冗雜狀態(tài)。下述示例就是很好的示范:
上述代碼輸出華氏度數(shù)值和相應(yīng)的攝氏度數(shù)值。很明顯,上述代碼存在重復(fù)性代碼段,這種情況下創(chuàng)建一個(gè)函數(shù)就可以更快速地完成上述功能:
更清爽對(duì)吧!代碼看起來更干凈、更簡(jiǎn)潔。而且,它比前一個(gè)示例更具描述性。那個(gè)公式只會(huì)在定義ConvertAndPrint函數(shù)時(shí)出現(xiàn)一次。如果只是想把華氏度轉(zhuǎn)換成攝氏度但是不顯示這些數(shù)據(jù)呢?可以通過定義不同的函數(shù)來實(shí)現(xiàn):
有木有!這種方法構(gòu)建了含有自解釋代碼的構(gòu)建塊,以便在不同的程序設(shè)計(jì)段中以多種方式重復(fù)調(diào)用這些構(gòu)建塊。
到這就結(jié)束了?No!
還是有的地方代碼重復(fù)性很高啊。PrintFahrenheitAndCelsius 函數(shù)需要輸入4個(gè)值。那么只想轉(zhuǎn)換3個(gè)值的時(shí)候怎么辦呢?想轉(zhuǎn)換300個(gè)值的時(shí)候又該怎么辦呢?當(dāng)然有一個(gè)更好的方法!
根據(jù)使用的編程語言不同,抽象化函數(shù)的參數(shù)數(shù)量的方法可能不太一樣。但是,大多數(shù)開發(fā)人員會(huì)通過使用容器(如矩陣或者List)解決這個(gè)問題。
最后的改變使函數(shù)更優(yōu)越:
結(jié)語
遵循一些簡(jiǎn)單的規(guī)定(規(guī)范化指導(dǎo))能使源代碼將更容易閱讀(從而進(jìn)一步理解、維護(hù)和擴(kuò)展)。
同時(shí),使用函數(shù)(或者其他編程語言的任何抽象方法)來創(chuàng)建可重復(fù)調(diào)用的構(gòu)建塊,抽象化參數(shù)使代碼限制更少、適用范圍增大。
對(duì)函數(shù)和變量恰當(dāng)?shù)刂匦旅梢栽黾釉创a的可讀性。就像讀故事一樣清晰、簡(jiǎn)單、容易理解。
使用這三個(gè)技巧,手中的代碼將宛若重獲新生,熠熠生輝。
網(wǎng)站名稱:這三個(gè)技巧,讓你的代碼可讀性提高300%
網(wǎng)站鏈接:http://jinyejixie.com/news21/102471.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、虛擬主機(jī)、面包屑導(dǎo)航、商城網(wǎng)站、搜索引擎優(yōu)化、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容