购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.4 Swift风格指南

当我们编写这本书,或者在我们的项目中使用Swift代码时,我们尽量遵循如下的原则:

·对于命名, 在使用时 能清晰表意是最重要的。因为API被使用的次数要远远多于被声明的次数,所以我们应当从使用者的角度来考虑它们的名字。尽快熟悉SwiftAPI设计准则 [8] ,并且在自己的代码中坚持使用这些准则。

·简洁经常有助于代码清晰,但是简洁本身不应该成为我们编码的目标。

·务必为函数添加文档注释—— 特别是 泛型函数。

·类型使用大写字母开头,函数、变量和枚举成员使用小写字母开头,两者都使用驼峰式命名法。

·使用类型推断。省略显而易见的类型会有助于提高代码的可读性。

·如果存在歧义或者在进行定义的时候不要使用类型推断(比如func就需要显式地指定返回类型)。

·优先选择结构体,只在确实需要使用到类特有的特性或者是引用语义时才使用类。

·除非你的设计就是希望某个类被继承使用,否则都应该将它们标记为final。

·除非一个闭包后面立即跟随有左括号,否则都应该使用尾随闭包(trailing closure)的语法。

·使用guard来提早退出的方法。

·避免对可选值进行强制解包和隐式强制解包。它们偶尔有用,但是如果经常需要使用它们,则往往意味着有其他不妥的地方。

·不要写重复的代码。如果你发现你写了好几次类似的代码片段,那么试着将它们提取到一个函数里,并且考虑将这个函数转化为协议扩展的可能性。

·试着去使用map和reduce,但这不是强制的。在合适的时候,使用for循环也无可厚非。高阶函数的意义是让代码的可读性更高。但是如果使用reduce的场景难以理解,则强行使用往往事与愿违,这种时候使用简单的for循环可能会更清晰。

·试着去使用不可变值:除非你需要改变某个值,否则都应该使用let来声明变量。不过如果能让代码更加清晰高效的话,也可以选择使用可变的版本。用函数将可变的部分封装起来,可以把它带来的副作用进行隔离。

·Swift的泛型可能会导致非常长的函数签名。坏消息是我们现在除了将函数声明强制写成几行,对此并没有什么好办法。我们会在示例代码中在这点上保持一贯性,这样你能看到我们是如何处理这个问题的。

·除非你确实需要,否则不要使用self.。在闭包表达式中,使用self是一个清晰的信号,表明闭包将会捕获self。

·尽可能地对现有的类型和协议进行扩展,而不是写一些全局函数。这有助于提高可读性,让别人更容易发现你的代码。


[1] https://itunes.apple.com/us/book/swift-programming-language/id1002622538

[2] https://developer.apple.com/swift/resources/

[3] https://twitter.com/headinthebox/status/655407294969196544

[4] http://www.paulgraham.com/onlisp.html

[5] http://www.informit.com/articles/article.aspx?p=2425867

[6] https://zh.wikipedia.org/wiki/ 行話

[7] https://en.wikipedia.org/wiki/Virtual_method_table

[8] https://swift.org/documentation/api-design-guidelines/ usplfNqDaM8ihC1YXPJXaIru87eWEiXOTFzIvzeZO/Z6+hglvgGLOZXCFGFxvnJn

点击中间区域
呼出菜单
上一章
目录
下一章
×