首頁 > 易卦

程式碼層次性表現方法都有哪些

作者:由 太原達內教育 發表于 易卦日期:2023-02-04

如何理解左縮排

我們在前幾期的文章中給大家簡單介紹了程式設計師在寫程式碼的時候需要遵循的一些程式設計規範等內容,而本文我們就再來了解一下,程式碼層次性表現方法都有哪些。

程式碼層次性表現方法都有哪些

1、縮排、空格與空行

縮排、空格與空行造就了程式碼的層次性和規律性,有助於直觀、快速、準確地理解業務邏輯。沒有縮排、空格和空行的程式碼可讀性極差。

2、縮排

縮排表示層次對應關係。使用Tab鍵縮排還是空格縮排長期以來備受爭議,形成兩大陣營。通常支援空格的人數多於支援Tab鍵的人數。這時候Tab鍵方一般都會提出∶“空格不是有2、4、8個之分嗎?不如讓空格方繼續投票一下,我們Tab鍵方還是非常團結一致的”。

由於不同編輯器對Tab的解析不一致,因此視覺體驗會有差異,而空格在編輯器之間是相容的。2個空格縮排的層次區分度不明顯,超過4個空格的縮排方式又留白過多,且大多數IDE預設為4個空格縮排,所以我們採用4個空格的縮排方式。

3、空格

空格用於分隔不同的程式設計元素。空格可以讓運算子、數值、註釋、引數等各種程式設計元素之間錯落有致,方便快速定位。空格的使用有如下約定∶

(1)任何二目、三目運算子的左右兩邊都必須加一個空格。

(2)註釋的雙斜線與註釋內容之間有且僅有一個空格。

(3)方法引數在定義和傳入時,多個引數逗號後邊必須加空格。

(4)沒有必要增加若干空格使變數的賦值等號與上一行對應位置的等號對齊。

(5)如果是大括號內為空,則簡潔地寫成{}即可,大括號中間無須換行和空格。

(6)左右小括號與括號內部的相鄰字元之間不要出現空格。

(7)左大括號前需要加空格。

4、空行

空行用來分隔功能相似、邏輯內聚、意思相近的程式碼片段,使得程式佈局更加清晰。在瀏覽程式碼時,空行可以起到自然停頓的作用,提升閱讀程式碼的體驗。哪些地方需要空行呢?在方法定義之後、屬性定義與方法之間、不同邏輯、不同語義、不同業務的程式碼之間都需要透過空行來分隔。

5、換行

程式碼中需要限定每行的字元個數,以便適配顯示器的寬度,以及方便CodeReview時進行diff比對。對於無節制的行數字符,需要不斷地拉取左右捲軸或者鍵盤移動游標,那是多麼差的體驗。

6、方法行數限制

水平方向上對字元數有限制,那麼垂直方向上呢?對於類的長度,只要類功能內聚,不做強制要求。但方法是執行單位,也是閱讀程式碼邏輯的高粒度模組。龐大的方法容易引起閱讀疲勞,讓人抓不住重點。程式碼邏輯要分主次、個性和共性。不要把不同層次的邏輯寫在一個大方法體裡,應該將次要邏輯抽取為獨立方法,將共性邏輯抽取成為共性方法(比如引數校驗、許可權判斷等),便於複用和維護,使主幹程式碼邏輯更加清晰。

高內聚、低耦合是程式設計師熟悉的口號。如何內聚和解耦,其實方法的行數限制就引發了這些維度的思考。把相關的功能強內聚,把弱相關的功能拆解開來,重新抽象、重新封裝。在拆分方法的過程中,通常會糾結對引數的處理,因為拆分的各個方法之間需要透過引數才能傳遞資料。有這種糾結的前提是方法需要傳入大量的引數,事實上這是另外一個話題。限制引數列表過長的方式有很多,比如包裝成類、隱式傳遞或放在集合中等。

7、控制語句

控制語句是底層機器碼跳轉指令的實現。方法內部的跳轉控制主要由條件判斷語句和迴圈語句實現。跳轉能力使程式能夠處理複雜邏輯,具備像人一樣的判斷能力和記憶回溯能力。條件判斷主要由if、switch、三目運算子組成。迴圈嚴格意義上也是一種跳轉,主要由for、while、do-while組成。