SlideShare a Scribd company logo
Coding Freestyle
Hao Lee, iOS @ Taipei
2018/01/09
Freestyle
Freestyle你有 嗎?
⾒見見⼭山是⼭山
TheDefaultValue 是以哪種
⽅方式宣告?
(1) Global Variables
(2) Local Variables
(3) Type Properties
⾒見見⼭山 是⼭山不
TheDefaultValue 是以哪種
⽅方式宣告?
(3) Type Properties
⾒見見⼭山 是⼭山不
在 TheObject2 內創建⼀一個
Global Variable,其型別為
theObject1,該如何命名?
var ---------: theObject1
⾒見見⼭山 是⼭山不
在 TheObject2 內創建⼀一個
Global Variable,其型別為
theObject1,該如何命名?
var Object: theObject1
var TheObject: theObject1
類別⼩小寫開頭?
變數⼤大寫開頭?
⾒見見⼭山 是⼭山不
在 TheObject2 內創建⼀一個
Global Variable,其型別為
Int,該如何命名?
var ----------: Int
⾒見見⼭山 是⼭山不
在 TheObject2 內創建⼀一個
Global Variable,其型別為
Int,該如何命名?
var number: Int
⾒見見⼭山 是⼭山不
在 theObject1 內創建⼀一個
Global Variable,其型別為
Int,該如何命名?
var ----------: Int
⾒見見⼭山 是⼭山不
在 theObject1 內創建⼀一個
Global Variable,其型別為
Int,該如何命名?
var number: Int
⾒見見⼭山 是⼭山不
在 TheObject2 內創建⼀一個
Global Variable,其型別為
UIView,該如何命名?
var ---------: UIView
⾒見見⼭山 是⼭山不
在 TheObject2 內創建⼀一個
Global Variable,其型別為
UIView,該如何命名?
var mView: UIView
m開頭?
族繁不及備載
• method ⽤用⼤大寫開頭
• 單字以底線連結
• 空格亂放
• 無視 Optional Type 強制轉型
以上為真實故事
Freestyle
我覺得不⾏行行
建議千萬別這樣做…
上次有⼈人這樣…結果…
Coding Freestyle
Coding Freestyle
帕斯卡命名法
• 源⾃自於Pascal語⾔言的命名慣例例
• 單字之間不以空格斷開或連接號、底線連結
• 第⼀一個單字⾸首字⺟母採⽤用⼤大寫字⺟母;後續單字的⾸首
字⺟母亦⽤用⼤大寫字⺟母
• 也有⼈人稱之為「⼤大駝峰式命名法」
駝峰式⼤大⼩小寫
• 來來⾃自Perl語⾔言中普遍使⽤用的⼤大⼩小寫混合格式
• 因《Programming Perl》封⾯面圖片為駱駱駝得名
• 有兩兩種格式
• ⼩小駝峰式命名法:第⼀一個單字以⼩小寫字⺟母開始
• ⼤大駝峰式命名法:每⼀一個單字的⾸首字⺟母都採⽤用
⼤大寫字⺟母
匈牙利利命名法
• ⾸首次在BCPL語⾔言中被⼤大量量使⽤用
• 字⾸首代表了了變數的實際資料類型 bBusy:布林林型
• 不表⽰示實際資料類型,⽽而給出變數⽬目的的提⽰示
• usName:變數代表⼀一個非安全字串串
• 開頭表⽰示變數的作⽤用域 mView:類別成員
官⽅方版 API 設計指南
https://swift.org/documentation/api-design-guidelines/
GitHub 不是只有 Code
SwiftLint
編譯成功後,檢查 Coding Style 有無問題
SwiftLint
• 安裝⽅方式包含:Homebrew、CocoaPods、…
• Xcode:專案需⼿手動加入 Run Script Phase
• Atom:使⽤用 APM 安裝 linter-swiftlint
• Command Line:於專案⽬目錄輸入 swiftlint
• 之後…等著被程式約束如何撰寫程式了了
遇到不符合規範時
Xcode
遇到不符合規範時
Atom
遇到不符合規範時
Command Line
常⾒見見案例例
• 單⾏行行長度過長
• 連續換⾏行行
• 單⾏行行僅有空⽩白字元
• 迴圈內只有⼀一個 if
• method 太複雜
長度過長
暫時停⽤用規則
// swiftlint:disable <規則名稱>
記得勾選此項⽬目
Trailing Whitespace Violation: Lines should not have
trailing whitespace. (trailing_whitespace)
太複雜了了
寫了了⼀一堆 if...else、switch...case、guard...else
.swiftlint.yml
客製化規則
Q & A

More Related Content

PDF
Ruby的类和对象模型
PDF
[圣思园][Java SE]Java se lesson 15
PDF
客製化換頁動畫
PDF
把玩 Jenkins CI
PDF
SceneKit 簡介
PDF
105-2 iOS程式設計(十七)
PDF
105-2 iOS程式設計(十五)
PDF
105-2 iOS程式設計(十四)
Ruby的类和对象模型
[圣思园][Java SE]Java se lesson 15
客製化換頁動畫
把玩 Jenkins CI
SceneKit 簡介
105-2 iOS程式設計(十七)
105-2 iOS程式設計(十五)
105-2 iOS程式設計(十四)

More from Hao Lee (13)

PDF
105-2 iOS程式設計(十三)
PDF
105-2 iOS程式設計(十二)
PDF
105-2 iOS程式設計(十一)
PDF
105-2 iOS程式設計(十)
PDF
105-2 iOS程式設計(九)
PDF
105-2 iOS程式設計(八)
PDF
105-2 iOS程式設計(七)
PDF
105-2 iOS程式設計(六)
PDF
105-2 iOS程式設計(五)
PDF
105-2 iOS程式設計(四)
PDF
105-2 iOS程式設計(三)
PDF
105-2 iOS程式設計(二)
PDF
105-2 iOS程式設計(一)
105-2 iOS程式設計(十三)
105-2 iOS程式設計(十二)
105-2 iOS程式設計(十一)
105-2 iOS程式設計(十)
105-2 iOS程式設計(九)
105-2 iOS程式設計(八)
105-2 iOS程式設計(七)
105-2 iOS程式設計(六)
105-2 iOS程式設計(五)
105-2 iOS程式設計(四)
105-2 iOS程式設計(三)
105-2 iOS程式設計(二)
105-2 iOS程式設計(一)
Ad

Coding Freestyle