第一次寫東西發(fā)布到網(wǎng)絡(luò)上杨箭,還是有點(diǎn)小激動(dòng)的。 不久之前加入了一個(gè)讀書分享群乙漓。 里面很多人都說讀了一定要總結(jié)出來级历,那樣才能讓自己學(xué)到的更多。于是乎叭披,我有了寫東西的沖動(dòng)寥殖。 最近一直在學(xué)習(xí)Swift,現(xiàn)在就寫寫在Swift里面本人理解的注釋風(fēng)格涩蜘。
注釋:
有一個(gè)眾所周知的工具 (VVDocument)
// 單行注釋
/// 單行注釋(三個(gè)斜桿的單行注釋可以生成注釋文檔嚼贡, 如果在開發(fā)中建議使用)
//!< 單行注釋 (一般在枚舉類型里面在case后面使用)
/*! 單行注釋 */
/* 多行注釋 */
/** 多行注釋 */
///單行注釋--尾行注釋一般在枚舉中使用
enum Test: Int {
web =1,//!< web類型
shop =2,//!< 商鋪活動(dòng)
};
文檔注釋
在注釋里面使用**包括好的文字會(huì)粗體顯示
Parameter 參數(shù)說明關(guān)鍵字
Throws: 拋出異常關(guān)鍵字
Returns: 返回對(duì)象
/// There are a few keywords Xcode can recognize automatically. The format is like **- <Keyword> -**:. The most common use one is **Parameter**, **Throws** and **Returns**.
/// **參數(shù)第一種寫法**:
/// - Parameter item1: This is item1
/// - Parameter item2: This is item2
/// **參數(shù)第二種寫法**
/// - Parameters:
/// - item1: This is item1
/// - item2: This is item2
/// - Throws: `MyError.BothNilError` if both item1 and item2 are nil.
/// - Returns: the result string.
func showKeywordsCommentsWithItem1(item1: AnyObject?, item2: AnyObject?) throws -> String {
if item1 == nil && item2 == nil{
throw MyError.BothNilError
}
let text = "There are a few keywords Xcode can recognize automatically."
return text
}
/// Some meta information can be added into the comment documentation using **author**, **authors**, **copyright**, **date**, **since**, **version**
///
/// This is an example
/// - Author: xixiaoyu
/// - Authors: All the geeks in the world:)
/// - Copyright: xixiaoyu@2016
/// - Date: 2016-07-22
/// - Since: iOS 6
/// - Version: 1.0.0
func test() -> String{
let haha = "Hello Swift"
return haha
}
超鏈接
空格只是為了顯示,在項(xiàng)目注釋中不需要空格
在注釋中使用[] ()中括號(hào)里面是跳轉(zhuǎn)名稱同诫,小括號(hào)里面是URL, 當(dāng)我們點(diǎn)擊xxx的時(shí)候 會(huì)在默認(rèn)的瀏覽器中打開url所指定的網(wǎng)頁粤策。 例如:
Whelcome to imooc.
在注釋中添加顯示圖片! [] () 中括號(hào)里面是logo名稱, 小括號(hào)里面是logo的URL误窖。
例如:
![Swift logo](https://github.com/liuyubobobo/Swift-Comment-Documentation-Tutorial/blob/master/images/swift.png?raw=true)
關(guān)鍵字
TODO
在開發(fā)的過程中遇到一個(gè)問題的時(shí)候叮盘,有可能我們需要放哪里過會(huì)再來處理,那我們可以使用關(guān)鍵字 TODO來進(jìn)行標(biāo)記
MARK
在一個(gè)文件里面可以使用MARK來對(duì)不同的方法進(jìn)行分類區(qū)分
FIXME
FIXME 標(biāo)記
命名規(guī)則
使用可讀的駝峰命名法去給類 方法 變量 命名霹俺。 class struct protocol enum 應(yīng)使用大寫柔吼,變量名使用小寫。
/// 變量常量命名
let testCount = 100
/// 類命名
class TestClass {
}
/// 結(jié)構(gòu)體命名
struct TestStruct {
}
/// 枚舉命名 使用首字母小寫的駝峰命名法給每個(gè)case命名
enum TestEnum {
case test1
case test2
}
/// 協(xié)議命名遵循Apple's API DesignGuidelines使用名詞來描述, 如 ing able ible,
protocol Prizable{
func isPrizable() -> Bool
}
protocol Moving {
func isMoveing() -> Bool
}
空格 空行
- 空格:
- 在運(yùn)算符前后空格 let p = 3 + 4
- 逗號(hào)后面空格丙唧。
- 左大括號(hào)前空格 (右大括號(hào)另起一行)
func test(number: Int) {
} - 定義常量愈魏、變量時(shí)冒號(hào)后面空格, 冒號(hào)前面頂著常量變量。 let test: Int = 2
- 必包的大括號(hào)里面包含的內(nèi)容需要前后空格想际。
func ==(s1:Student,s2:Student) -> Bool { return s1.score == s2.score }
- 空行:
- 在右大括號(hào)之后如果還有方法需要空行培漏,如果沒有則無需空行
- 代碼塊縮進(jìn)原則
struct Student: CustomStringConvertible, Equatable, Comparable, Prizable {
var name: String
var score: Int
var description: String{
return name + "Score: " + String(score)
}
func isPrizable() -> Bool {
return score >= 60
}
}
推薦
if person.isHave {
// Do
} else {
// Do else
}
不推薦
if (user.isHappy ) 多余空格
{ 換行位置不對(duì)
// Do something
}
else {
// Do something else
}
類型定義 (轉(zhuǎn)自: )
盡可能的使用swift自帶類型,在必須的時(shí)候才做橋接 沼琉,String-> NSString , Set->NSSet
能使用let盡量使用北苟, 一般情況下不建議到處使用var
不要定義常量變量使用關(guān)鍵字
盡量let foo = something 而非 var for = somthing
let-有保障 并且它的值的永遠(yuǎn)不會(huì)改變,對(duì)同事也是個(gè) 清晰的標(biāo)記打瘪,對(duì)于它的用法友鼻,之后的代碼可以做個(gè)強(qiáng)而有力的推斷傻昙。更容易明白代碼的含義。否則的話一旦你用了 var彩扔,還要去考慮值會(huì)不會(huì)改變妆档,這時(shí)候你就不得不人肉去檢查。
這樣虫碉,無論何時(shí)你看到 var贾惦,就假設(shè)它會(huì)變,并找到原因敦捧。
類型推斷
Swift是高安全性語言须板,能讓系統(tǒng)推斷的類型不要顯示指明, 空的字典和空數(shù)組的類型 使用類型標(biāo)記 加強(qiáng)語義
如:
/// 推薦
let testString = "Hello"
var names: [String] = []
var lookup: [String: Int] = [:]
/// 不推薦
let testString: String = "Hello"