作為一名IT工程師,想要擁有良好的代碼素養(yǎng),首先要讓自己的代碼可維護(hù),不給別人的維護(hù)帶來巨大的成本和工作量,其次盡量保證代碼的美觀可讀,整潔的代碼人見人愛,如同閱讀一本好書,令人心情愉悅。對(duì)于可讀性,代碼應(yīng)遵循以下三條原則:
1.可讀性基本定理 可讀性基本定理——“代碼的寫法應(yīng)當(dāng)使別人理解它所需的時(shí)間最小化”。
代碼風(fēng)格和原則不是一概而論的,我們經(jīng)常需要對(duì)一些編碼原則和方案進(jìn)行取舍,例如對(duì)于三元表達(dá)式的取舍,當(dāng)我們覺得兩種方案都占理時(shí),那么唯一的評(píng)判標(biāo)準(zhǔn)就是可讀性基本定理,無論寫法多么的高超炫技,最好的代碼依舊是讓人第一時(shí)間能夠理解的代碼。
2. 有意義的名稱 代碼的可讀性絕大部分依賴于變量和函數(shù)的命名,一個(gè)好的名稱能夠一針見血地幫助維護(hù)者理解邏輯,如同寫文章中的“文筆”,文筆優(yōu)異者總能將故事娓娓道來,引人入勝。
不過要起好名稱還是很難的,尤其是我們不是以英語為母語,更是添加了一層障礙,有些人認(rèn)為糾結(jié)在名稱上會(huì)導(dǎo)致效率變低,開發(fā)第一時(shí)間應(yīng)該完成需求的開發(fā)。這樣說并沒有錯(cuò),我們?cè)陂_發(fā)過程中應(yīng)當(dāng)專注于功能邏輯,但不要完全忽視命名,所謂“文筆”是需要鍛煉的,思考的越多,命名就會(huì)愈加的水到渠成,到后來也就不太會(huì)影響工作效率了。
在這里推薦鮑勃大叔提到的童子軍規(guī),每一次看自己的代碼,都進(jìn)行一次重構(gòu),最簡(jiǎn)單的重構(gòu)便是改名,也許一開始覺得命名還比較貼合,但邏輯越寫越不符合初始的命名了,當(dāng)回顧代碼時(shí),我們可以順手對(duì)變量和方法進(jìn)行重新命名,現(xiàn)代編輯工具也很容易做到這一點(diǎn)。
文不對(duì)題的命名是最可怕的,如:
這個(gè)函數(shù)被命名為check*開頭的,本意是檢測(cè)課程時(shí)間是否沖突,但內(nèi)部邏輯卻包含了支付整個(gè)流程,此時(shí)對(duì)于調(diào)用者來說,如果不去細(xì)看內(nèi)部邏輯,很有可能就會(huì)錯(cuò)誤的認(rèn)為check函數(shù)沒有副作用導(dǎo)致事故發(fā)生。
3.適當(dāng)?shù)淖⑨尵S護(hù) 注釋是一個(gè)比較有爭(zhēng)議性的話題,有人認(rèn)為可讀的函數(shù)變量就很清晰,不需要額外的注釋,且注釋有不可維護(hù)性,如:
實(shí)際上,這個(gè)字段的含義早已發(fā)生了改變,但由于修改者只修改了邏輯,并沒有注意到這一行注釋,導(dǎo)致這個(gè)老注釋提供了錯(cuò)誤信息,此時(shí)的注釋不僅變成了無效注釋,甚至?xí)?dǎo)致維護(hù)人的誤解,造成bug的產(chǎn)生。
對(duì)于這種情況,要么維護(hù)注釋,要么在注釋里面注明接口文檔,維護(hù)文檔,在其他情況下,適當(dāng)?shù)淖⑨屖怯斜匾模瑢?duì)于復(fù)雜的邏輯,如果有一個(gè)簡(jiǎn)練的注釋,對(duì)于代碼可讀性的幫助是極大的,但有些不必要的注釋可以去掉,注釋的取舍關(guān)鍵在于可讀性基本定理,如:
對(duì)于上述邏輯來說,雖然通過變量可以大致猜出功能含義,但一眼看上去就能清晰掌握邏輯結(jié)構(gòu),歸功于注釋的簡(jiǎn)明與清晰。
分享標(biāo)題:網(wǎng)站開發(fā)代碼的可讀性原則
網(wǎng)頁網(wǎng)址:http://jinyejixie.com/news28/113378.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、網(wǎng)站排名、電子商務(wù)、網(wǎng)站設(shè)計(jì)、網(wǎng)站策劃、企業(yè)建站
廣告
聲明:本網(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)