swift 代碼規范

1.編碼格式

1.1 使用四個空格進行縮進(在 Xcode > Preferences > Text Editing > Indentation 將 Tab 和自動縮進都設置為 4 個空格)

1.2 每行最多160個字符,這樣可以避免一行過長。 (Xcode->Preferences->Text Editing->Page guide at column: 設置成160即可)

1.3使用二元運算符(+ - * / = > >= < <= ==或->)的前后都需要添加空格,左小括號后面和右小括號前面不需要空格。

// 推薦
let value = (1 + 2) * 3

// 不推薦
let value = ( 1-2 )*3

1.4 相比較于OC,swift不建議在每句代碼的結尾添加分號(;)

// 推薦
let str: String = "hello world!"

// 不推薦
let str: String = "hello world!";

1.5 在逗號(,)、冒號(:)后面加一個空格

// 推薦
let array: Array = [1, 2, 3, 4, 5, 6]

// 不推薦
let array: Array = [1,2,3,4,5,6]
let array:Array = [1, 2, 3, 4, 5, 6]

1.6 方法的左大括號不要另起,并和方法名之間留有空格

// 推薦
func a() {
    //代碼邏輯處理
}

// 不推薦
func a()
{
    //代碼邏輯處理
}

1.7 判斷語句不用加括號

// 推薦
if typeValue == 1 {
    //代碼邏輯處理
}

// 不推薦
if (typeValue == 1) {
    //代碼邏輯處理
}

1.8 在訪問枚舉類型時,使用更簡潔的點語法

// 推薦
imageView.setImageWithURL(url, type: .person)

// 不推薦
imageView.setImageWithURL(url, type: AsyncImageView.Type.person)

1.9 針對屬性或方法添加注釋時,盡可能使用Xcode注釋快捷鍵 command + option + /

//屬性
/// <#Description#>
var title: String?

//方法
/// <#Description#>
///
/// - Parameters:
///  - tableView: <#tableView description#>
///  - section: <#section description#>
/// - Returns: <#return value description#>
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return dataList.count
}

1.10 當函數參數有多個時,應該函數參數分行顯示

// 推薦
init(title: String,
     message: String?,
     sureBtnTitle: String,
     sureBtnTitleColor: UIColor,
     sureBtnBlock: AlertBtnBlock?) {
    //代碼邏輯處理
}

// 不推薦
init(title: String, message: String?, sureBtnTitle: String, sureBtnTitleColor: UIColor, sureBtnBlock: AlertBtnBlock?) {
    //代碼邏輯處理
}

1.11 當遇到需要處理的數組或字典內容較多需要多行顯示

// 推薦
var array: Array = [String]()
array = [
    "aaaaaaaaaaaa",
    "bbbbbbbbbbbb",
    "cccccccccccc"
]

var dic: Dictionary = [String: String]()
dic = [
    "a": "aaaaaaaaaa",
    "b": "bbbbbbbbbb",
    "c": "cccccccccc"
]

// 不推薦
var array: Array = [String]()
array = ["aaaaaaaaaaaa", "bbbbbbbbbbbb", "cccccccccccc"]

var dic: Dictionary = [String: String]()
dic = ["a": "aaaaaaaaaa", "b": "bbbbbbbbbb", "c": "cccccccccc"]

2.命名規范

2.1 常量,變量,函數,方法的命名規則使用小駝峰規則,首字母小寫,類型名使用大駝峰規則,首字母大寫。

class MyClass: class {
    let myImageView: UIImageView
    let myName: String
}

2.2 當命名里出現縮寫詞時,縮寫詞要么全部大寫,要么全部小寫,以首字母大小寫為準

// 推薦
let urlString: URLString

// 不推薦
let uRLString: UrlString

2.3 bool類型命名時,使用is作為前綴

let isMine: Bool = false
let isFirstLogin: Bool = true

2.4 屬性命名應該要包括類型信息

// 推薦
let titleLab: UILabel = UILabel()
let iconImageView: UIImageView = UIImageView()
let iconImgV: UIImageView = UIImageView()
let homePageVC: UIViewController = UIViewController()
let sureBtn: UIButton = UIButton.init(type: .custom)

// 不推薦
let title: UILabel = UILabel()
let iconImage: UIImageView = UIImageView()
let homePageView: UIViewController = UIViewController()
let btnSubmit: UIButton = UIButton.init(type: .custom)

3.語法規范

3.1 盡可能的多使用let,少使用var

3.2 Switch 模塊中不顯式使用break

3.3 可選類型拆包取值時,使用if let 判斷

// 推薦
if let data = result.data {
    print(data)
}

// 不推薦
if result.data != nil {
    print(result.data)
}

3.4常量定義,建議盡可能定義在類型里面,避免污染全局命名空間

// 推薦
class HomeListCell: UITableViewCell {
    static let kHomeCellHeight = 80.0
}

// 不推薦
static let kHomeCellHeight = 80.0
class HomeListCell: UITableViewCell {
    //代碼邏輯處理
}

3.5 循環遍歷使用for-in表達式

//循環
for i in 0..<list.count {
  print(i)
}

//遍歷
for listData in listArray {
    print(listData)
}

3.6 建議把訪問修飾符放到第一個位置

// 推薦
private static let kMyPrivateNumber: Int

// 不推薦
static private let kMyPrivateNumber: Int

3.7 訪問修飾符不應單獨另起一行,應和訪問修飾符描述的對象保持在同一行

// 推薦
public class Pirate {
    //代碼邏輯處理
}

// 不推薦
public
class Pirate {
    //代碼邏輯處理
}

3.8 聲明單例屬性可以通過下面方式進行

class PirateManager {    
    static let sharedInstance = PirateManager()
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,936評論 6 535
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,744評論 3 421
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,879評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,181評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,935評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,325評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,384評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,534評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,084評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,892評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,067評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,623評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,322評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,735評論 0 27
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,990評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,800評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,084評論 2 375