Swift編碼風格

  編碼風格是一個比較古老的話題,一般認爲它最早是在布里安·柯尼漢(Brian Kernighan)和丹尼斯·裏奇(Dennis Ritchie)合作出版的《The C Programming Language》一書中出現的,這一風格也被稱之爲K&R風格。現在大多數程序員使用的編碼風格是Google編碼風格。雖然對於機器而言,編碼風格並沒有什麼卵用,但是對於程序員而言,良好的編碼風格還是非常的重要。因此,我們應該在日常編碼過程中自覺養成良好的編碼習慣。

  儘管Xcode非常強大,有很多編碼格式已經不需要我們手動去調整,但是還是有一些編碼風格是編程工具無法幫我們去完成的,所以我們還是有必要學習一些他人總結的好的編碼規範。

  1、命名最好做到見名知意

  在代碼中命名過程中,最好是能清楚的表述代碼的意思。一個毫無意義的命名會增加代碼閱讀者的困惑,非常不利於自己後續維護,也不利於和其他人進行交流。關於代碼命名規範,可以參考蘋果官方的Swift API設計準則

  2、類型最好是用駝峯標識

  與這一點有關的內容參見《Swift命名規範》

  3、儘可能的使用let

  在聲明一個變量時,儘量使用let,以防止變量被意外修改,從而保證程序的安全性。一個引用類型的變量也可以使用let來聲明。使用let聲明的引用類型,只是引用本身被常量化了,並不是指它引用的對象被常量化。也就是說,你不能再給這個引用賦一個新的值,但是,該引用所指向的對象卻是可以改變的。比如說:

// 引用本身是常量
let view = UIView()

// 但是可以改變引用對象的內容
view.backgroundColor = .red  // 這裏代碼不會出錯

// 不過不能再給這個引用賦一個新的值
view = UIView()  // 這裏代碼會出錯

  4、儘量使用類型推斷

  Swift的編譯器非常強大,它可以根據字面量來推斷具體的類型。所以,爲了提高代碼的閱讀性,儘量不要使用顯而易見的類型聲明。除非不加類型聲明容易產生歧義,比如說:

// 這是一個Array類型的數組
let arr = ["LeBron James", "Carmelon Anthony", "Dwyane Wade", "Chris Paul"]

// 這是一個Set類型的集合
let set: Set = ["LeBron James", "Carmelon Anthony", "Dwyane Wade", "Chris Paul"]

  像上面聲明一個Set類型的集合時,如果省略類型Set,編譯器就會直接將其推斷爲Array類型。還有,集合類型一般是指Array、Set和Dictionary的總稱,但是有時候我們也會把Set類型的變量或者常量也稱之爲集合。在碰到別人說“集合”時,應該根據上下文意思來理解他到底是在說Set,還是在說Array、Set和Dictionary這一類的總稱。其實這個也沒什麼好說的。

  5、優先使用結構體

  在Swift中,結構體的功能非常強大,它也具有面向對象的特性。一般而言,如果不是需要使用類才具有的特性時,儘量使用結構體。關於什麼時候使用結構體,什麼時候使用類,詳情參見《Swift中常用的數據結構(上)》中第一部分的內容,或者直接查看蘋果官方文檔Classes and Structures的內容。

  6、使用final標記

  在設計類時,如果不是用來作爲其他類的父類(或者說這個類不需要子類),應該將它標記爲final。

  7、學會使用guard

   guard語句幾乎可以完成if語句的所有功能,但是有時候使用guard比使用if語句閱讀性要好,尤其是在替代if-else嵌套語句時,guard語句的優勢十分明顯。另外,在方法中最好是使用guard提早退出方法。

  8、儘量使用尾隨閉包

  如果不是使用閉包作爲返回值,儘量使用尾隨閉包。

  9、儘可能的少用強制解包

  不管是強制解包還是隱式強制解包,它都是一個非常危險的操作,使用不當很容易造成程序崩潰。比較好的習慣是使用if或者guard進行安全校驗。

  10、熟練的抽取重複的代碼

  不管是出於代碼簡介層面的考慮,還是出於代碼複用的角度考慮,你都應該將相似的代碼片段抽取到一個函數裏,甚至還可以考慮將這個函數轉化爲協議擴展。

  11、儘量少些self.

  如果代碼不會出現歧義,或者是因爲其它需要,儘量不要寫self.。

  12、儘量少寫全局函數

  出於代碼閱讀性方面的考慮,儘可能多的對現有的類型和協議進行相應的擴展,而不是一味的去寫全局函數。

  關於Swift編碼風格的話題暫時先寫到這裏,以後如果學到更多有關的知識,再回過頭來進行相應的補充。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章