天天看點

#yyds幹貨盤點#web開發高品質代碼

簡單性原則

What:追求簡單

自始至終都以最簡單的邏輯編寫代碼,讓程式設計初學者一眼就能看懂。在程式設計時我們要重視的是局部的完整性,而不是複雜的整體關聯性。

Why:Bug 喜歡出現在複雜的地方

軟體故障常集中在某一個區域,而這些區域都有一個共同的特點,那就是複雜。編寫代碼時如果追求簡單易懂,代碼就很難出現問題。不過,簡單易懂的代碼往往給人一種不夠專業的感覺。這也是經驗老到的程式員喜歡寫老練高深的代碼的原因。是以我們要有足夠的定力來抵擋這種誘惑。

Do:編寫自然的代碼

放下高超的技巧,堅持用簡單的邏輯編寫代碼。既然故障集中在代碼複雜的區域,那我們隻要讓代碼簡單到讓故障無處可藏即可。不要盲目地讓代碼複雜化、臃腫化,要保證代碼簡潔。

同構原則

What:力求規範

同等對待相同的東西,堅持不搞特殊。同等對待,舉例來說就是同一個子產品管理的數值全部采用同一機關、公有函數的參數個數統一等。

Why:不同的東西會更顯眼

相同的東西用相同的形式表現能夠使不同的東西更加突出。不同的東西往往容易産生 ​

​bug​

​。遵循同構原則能讓我們更容易嗅出代碼的異樣,進而找出問題所在。

統一的代碼頗具美感,而美的東西一般更容易讓人接受,是以統一的代碼有較高的可讀性。

Do:編寫符合規範的代碼

可靠與簡單是代碼不可或缺的性質,在編寫代碼時,務必克制住自己的表現欲,以規範為先。

對稱原則

What:講究形式上的對稱

在思考一個處理時,也要想到與之成對的處理。比如有給标志位置 ​

​1​

​ 的處理,就要有給标志位置 ​

​0​

​ 的處理。

Why:幫助讀代碼的人推測後面的代碼

具有對稱性的代碼能夠幫助讀代碼的人推測後面的代碼,提高其了解代碼的速度。同時,對稱性會給代碼帶來美感,這同樣有助于他人了解代碼。

此外,設計代碼時将對稱性納入考慮的範圍能防止我們在思考問題時出現遺漏。如果說代碼的條件分支是故障的溫床,那麼對稱性就是思考的架構,能有效阻止條件遺漏。

Do:編寫有對稱性的代碼

在出現“條件”的時候,我們要注意它的“反條件”。每個控制條件都存在與之成對的反條件(與訓示條件相反的條件)。要注意條件與反條件的統一,保證控制條件具有統一性。

我們還要考慮到例外情況并極力避免其發生。例外情況的特殊性會破壞對稱性,成為故障的溫床。特殊情況過多意味着需求沒有得到整理。此時應重新審視需求,盡量從代碼中剔除例外情況。

命名也要講究對稱性。命名時建議使用 ​

​set/get​

​、​

​start/stop​

​、​

​begin/ end​

​ 和 ​

​push/pop​

​ 等成對的詞語。

層次原則

What:講究層次

注意事物的主從關系、前後關系和本末關系等層次關系,整理事物的關聯性。

不同層次各司其職,同種處理不跨越多個層次,這一點非常重要。比如執行了擷取資源的處理,那麼釋放資源的處理就要在相同的層次進行。又比如互斥控制的标志位置 ​

​1​

​ 和置 ​

​0​

​ 的處理要在同一層次進行。

Why:層次結構有助于提高代碼的可讀性

有明确層次結構的代碼能幫助讀代碼的人抽象了解代碼的整體結構。讀代碼的人可以根據自身需要閱讀下一層次的代碼,掌握更加詳細的資訊。

這樣可以提高代碼的可讀性,幫助程式員表達編碼意圖,降低 ​

​bug​

​ 發生的機率。

Do:編寫有抽象層次結構的代碼

在編寫代碼時設計各部分的抽象程度,建構層次結構。保證同一個層次中的所有代碼抽象程度相同。另外,高層次的代碼要通過外部視角描述低層次的代碼。這樣做能讓調用低層次代碼的高層次代碼更加簡單易懂。

線性原則

What:處理流程盡量走直線

一個功能如果可以通過多個功能的線性結合來實作,那它的結構就會非常簡單。

反過來,用條件分支控制代碼、毫無章法地增加狀态數等行為會讓代碼變得難以了解。我們要避免做出這些行為,提高代碼的可讀性。

Why:直線處理可提高代碼的可讀性

複雜的處理流程是故障的溫床。故障多出現在複雜的條件語句和循環語句中。另外,​

​goto​

​ 等讓流程出現跳躍的語句也是故障的多發地。

如果能讓處理由高層次流向低層次,一氣呵成,代碼的可讀性就會大幅提高。與此同時,可維護性也将提高,添加功能等改良工作将變得更加容易。

一般來說,自上而下的處理流程簡單明快,易于了解。我們應避開複雜反複的處理流程。

Do:盡量不在代碼中使用條件分支

盡量減少條件分支的數量,編寫能讓代碼閱讀者線性地看完整個處理流程的代碼。

為此,我們需要把一些特殊的處理拿到主處理之外。保證處理的統一性,注意處理的流程。記得時不時俯瞰代碼整體,檢查代碼是否存在過于複雜的部分。

另外,對于經過長期維護而變得過于複雜的部分,我們可以考慮對其進行重構。明确且可靠的設計不僅對我們自身有益,還可以給負責維護的人帶來友善。

清晰原則

What:注意邏輯的清晰性

邏輯具有清晰性就代表邏輯能清楚證明自身的正确性。也就是說,我們編寫的代碼要讓人一眼就能判斷出沒有問題。任何不明确的部分都要附有說明。

Why:消除不确定性

代碼免不了被人一遍又一遍地閱讀,是以代碼必須保持較高的可讀性。編寫代碼時如果追求高可讀性,我們就不會采用取巧的方式編寫代碼,編寫出的代碼會非常自然。代碼是給人看的,也是由人來修改的,是以我們必須以人為對象來編寫代碼。消除代碼的不确定性是對自己的作品負責,這麼做也可以為後續負責維護的人提供友善。

Do:編寫邏輯清晰的代碼

我們應選用直覺易懂的邏輯。會給讀代碼的人帶來疑問的部分要麼消除,要麼加以注釋。另外,我們應使用任何人都能立刻了解且不存在歧義的術語。要特别注意變量名等一定不能沒有意義。

安全原則

What:注意安全性

Why:防止故障發展成重大事故

Do:編寫安全的代碼

繼續閱讀