swift命名規(guī)范

1.指導(dǎo)方針:

為了讓代碼更通熟易懂,符合大多數(shù)程序員的閱讀使用習(xí)慣,所以總結(jié)一下相關(guān)命名規(guī)范
以下命名規(guī)范包含:
  • 命名分類
  • 訪問權(quán)限
  • 注釋

2. 命名分類

在項目中,大多數(shù)地方使用駝峰式命名,,結(jié)構(gòu)體枚舉,協(xié)議,需要附加前綴,以下示例均使用NY作為前綴

  • 2.1 類名class/結(jié)構(gòu)體struct
  • 2.2 方法名function
  • 2.3 變量variable
  • 2.4 常量constant
  • 2.5 枚舉enum
  • 2.6 協(xié)議protocol
  • 2.7 閉包closure
  • 2.8 泛型temple

2.1 類名class/結(jié)構(gòu)體struct

class  NYPepple: NSObject {
    var name: String? 
    var age: Int?
    let color: UIColor?
}

struct NYWeather {
    var temperature: CGFloat = 0
    var windLevel: Int = 1
}

struct NYLocation {
    var longitude: CGFloat = 0
    var latitude: CGFloat = 0
}

2.2 方法名function


func deal(with people: NYPepple, at location: NYLocation) {

}

2.3 變量variable

變量命名,采取功能屬性特性+變量類型全稱的形式,請避免使用縮寫的形式
正確寫法

var people: NYPeople = .init()
var nameLabel: UIlabel = .init()
var passwordTextField: UITextField = .init()
var dealViewController: UIViewController = .init()

錯誤寫法

var p: = NYPeople.init()
var nameL = UIlabel.init()
var passwordTF = UITextField.init()
var dealVC = UIViewController()

2.4 常量constant

let weather: NYWeather = .init()

2.5 枚舉enum

enum NYWeatherStyle {
    case sunny
    case cloudy
    case windy
}

2.6 協(xié)議protocol

protocol NYCheckWeatherProtocol: NSObjectProtocol {
    func ny_checkWeather(weather: NYWeather, location: NYLocation)
}

2.7 閉包closure

typealias NYActionClosure = (_ item1: String, _ item2: String)->Void
func showWeather(with actionClosure: NYActionClosure) {
}

2.8 泛型temple

泛型通常使用全大寫表示

class NYSon<MODEL>: NYFather {
    func print(model: MODEL) {
        print(model)
    }
}

3 權(quán)限控制

在swift默認(rèn)都是internal類型

- open: 可以在任何地方訪問,包括override和繼承。
- public: 可以在任何地方訪問,但其他module中不可以被override和繼承,而在本module內(nèi)可以被override和繼承。
- internal: 新建文件時默認(rèn)為internal,所修飾的屬性或方法在整個模塊內(nèi)都可以訪問。
- fileprivate: 在當(dāng)前文件內(nèi)可以被訪問,在子類中能訪問。
- private: 在當(dāng)前類中能被訪問,在子類中不能訪問。

在涉及到需要外部訪問的領(lǐng)域,我們默認(rèn)所有類的變量都為private,需要對外公開的屬性設(shè)置為private(set),需要修改類內(nèi)部屬性時,通過對外公開的方法修改(遵循接口開閉的設(shè)計原則)以下為示例代碼:

class NYSon: NSObject {
    private(set) var name: String
    private(set) var age: Int
    init(name: String, age: Int) {
      super.init()
      self.name = name
      self.age = age
    }
    // 長大1歲
    func grow() {
      age += 1
    }
}
var son: NYSon = .init(name: "little Jhon", age: 12)
son.grow()    //長大一歲
print(son.age)  //輸出12歲

/**
修改son對象的屬性,僅可以通過類提供的方法去修改,請勿使用
son.age = 12
的方式
*/

4 注釋

注釋使用蘋果推薦的注釋格式, 快捷鍵option + command + / (? + ? + /)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容