警告
盡量將所有警告都處理掉郑气。
命名
1.使用具有描述性的名稱萍嬉,
2.使用駝峰式命名規(guī)則給類方法和變量等命名乌昔。
3.類別名稱(類,結構體壤追,枚舉和協(xié)議)首字母大寫磕道,方法或者變量的首字母小寫。
// 常量
private let maximumWidgetCount = 100
// 方法
func setupWidget() ->{
print("ok")
}
// 類
class WidgetContainer {
var widgetButton: UIButton
let widgetHeightPercentage = 0.85
}
縮進
1.使用四個空格進行縮進
2.每行最多160個字符行冰,這樣可以避免一行過長溺蕉。
3.確保每個文件結尾都有空白行。
4.代碼結尾不要使用分號;
5.在逗號后面加一個空格
let numberArray = [1, 3, 6, 10]
6.不要使用 as! 或 try!
推薦
// 使用if let as悼做?判斷
if let text = text as? String {
/* ... */
}
// 使用if let try 或者 try?
if let test = try aTryFuncton() {
/* ... */
}
Closure Expressions(閉包表達式)
閉包放在最后面
// Preferred(推薦)
UIView.animateWithDuration(1.0) {
self.myView.alpha = 0
}
UIView.animateWithDuration(1.0,
animations: {
self.myView.alpha = 0
},
completion: { finished in
self.myView.removeFromSuperview()
}
)
// Not Preferred(不推薦)
UIView.animateWithDuration(1.0, animations: {
self.myView.alpha = 0
})
UIView.animateWithDuration(1.0,
animations: {
self.myView.alpha = 0
}) { f in
self.myView.removeFromSuperview()
}
7.命名應該具有描述性 和 清晰的疯特。
不要縮寫,簡寫命名肛走,或用單個字母命名漓雅。
如果原有命名不能明顯表明類型,則屬性命名內要包括類型信息朽色。
// 推薦
class RoundAnimatingButton: UIButton { /* ... */ }
// 不推薦
class CustomButton: UIButton { /* ... */ }
// 推薦
class ConnectionTableViewCell: UITableViewCell {
//這個不是 UIImage, 不應該以Image 為結尾命名邻吞。
?let personImageView: UIImageView
?let personImage: UIImageView
// 建議使用 animationDuration 或 animationTimeInterval
?let animationDuration: NSTimeInterval
?let animation: NSTimeInterval
// transition 不能清晰表達出是String
?let transitionText: String
?let transitionString: String
?let transition: String
// 作為屬性名的firstName,很明顯是字符串類型纵搁,所以不用在命名里不用包含String
?let firstName: String
?let firstNameLabel: UILabel
// 因用snapkit來布局吃衅,頁面默認都是ViewController, 所以這個簡化
?let testController: UIViewController
// 當使用outlets時, 確保命名中標注類型腾誉。為了保持一致性,建議把類型放到變量的結尾峻呕,而不是開始利职,如submitButton
?@IBOutlet weak var submitButton: UIButton!
?@IBOutlet weak var emailTextField: UITextField!
?@IBOutlet weak var nameLabel: UILabel!
// 常量統(tǒng)一用全大寫,下劃線連線
enum Dict: String {
case AAA_BBB
case CCC_DDD
}
// Localizable.strings
"ALERT_TITLE" = "測試";
"ALERT_CONTENT_UNLOGIN" = "請登錄";
"ALERT_ACTION_OK" = "好的";
"ALERT_ACTION_CANCEL" = "取消";
}