Swift编程规范之 Code Formatting

来源:互联网 发布:中国电子科技集团 知乎 编辑:程序博客网 时间:2024/05/01 02:02

Code Formatting:代码格式化

  • 1 使用4个空格来代替Tabs

  • 2 避免过长的行,可以在XCode中进行设置单行最大长度:(Xcode->Preferences->Text Editing->Page guide at column: 160 is helpful for this)

  • 3 保证每个文件结尾都存在一个新行 Ensure that there is a newline at the end of every file.

  • 4 避免无意义的尾随空格: (Xcode->Preferences->Text Editing->Automatically trim trailing whitespace + Including whitespace-only lines).

  • 5 避免将单独的左花括号放置到一行,我们参考了:1TBS style。

class SomeClass {    func someMethod() {        if x == y {            /* ... */        } else if x == z {            /* ... */        } else {            /* ... */        }    }    /* ... */}
  • 6 在写变量的类型声明、字典类型的键、函数参数、协议的声明或者父类的时候,不要在冒号前添加空格。
// specifying typelet pirateViewController: PirateViewController// dictionary syntax (note that we left-align as opposed to aligning colons)let ninjaDictionary: [String: AnyObject] = [    "fightLikeDairyFarmer": false,    "disgusting": true]// declaring a functionfunc myFunction<t, u: someprotocol where t.relatedtype == u>(firstArgument: U, secondArgument: T) {    /* ... */}// calling a functionsomeFunction(someArgument: "Kitten")// superclassesclass PirateViewController: UIViewController {    /* ... */}// protocolsextension PirateViewController: UITableViewDataSource {    /* ... */}</t, u: someprotocol where t.relatedtype == u>
  • 7 一般来说,逗号后面都要跟随一个空格。
let myArray = [1, 2, 3, 4, 5]
  • 8 在二元操作符譬如+, ==, 或者 ->的前后需要加上空格,但是对于( 、`)的前后不需要加空格。
let myValue = 20 + (30 / 2) * 3if 1 + 1 == 3 {    fatalError("The universe is broken.")}func pancake() -> Pancake {    /* ... */}
  • 9 我们默认使用Xcode推荐的格式化风格(CTRL-I) ,在声明某个函数的时候会多行排布参数。
ode indentation for a function declaration that spans multiple linesfunc myFunctionWithManyParameters(parameterOne: String,                                  parameterTwo: String,                                  parameterThree: String) {    // Xcode indents to here for this kind of statement    print("\(parameterOne) \(parameterTwo) \(parameterThree)")}// Xcode indentation for a multi-line `if` statementif myFirstVariable > (mySecondVariable + myThirdVariable)    && myFourthVariable == .SomeEnumValue {    // Xcode indents to here for this kind of statement    print("Hello, World!")}
  • 10 在调用多参数函数的时候,会把多个参数放置到单独的行中:
someFunctionWithManyArguments(    firstArgument: "Hello, I am a string",    secondArgument: resultFromSomeFunction()    thirdArgument: someOtherLocalVariable)
  • 11 对于大型的数组或者字典类型,应该将其分割到多行内,[ 与 ]类比于花括号进行处理。对于闭包而言也应该同样适合于该规则。
someFunctionWithABunchOfArguments(    someStringArgument: "hello I am a string",    someArrayArgument: [        "dadada daaaa daaaa dadada daaaa daaaa dadada daaaa daaaa",        "string one is crazy - what is it thinking?"    ],    someDictionaryArgument: [        "dictionary key 1": "some value 1, but also some more text here",        "dictionary key 2": "some value 2"    ],    someClosure: { parameter1 in        print(parameter1)    })
  • 12 尽可能地使用本地变量的方式来避免多行的判断语句。
// PREFERREDlet firstCondition = x == firstReallyReallyLongPredicateFunction()let secondCondition = y == secondReallyReallyLongPredicateFunction()let thirdCondition = z == thirdReallyReallyLongPredicateFunction()if firstCondition && secondCondition && thirdCondition {    // do something}// NOT PREFERREDif x == firstReallyReallyLongPredicateFunction()    && y == secondReallyReallyLongPredicateFunction()    && z == thirdReallyReallyLongPredicateFunction() {    // do something}
0 0
原创粉丝点击