语言
使用美式英语拼写以匹配苹果公司的API
优选:
var color = "red"
不建议使用:
间隔
- 使用2个空格进行缩进而不是使用Tab,这样可以节省空格,阻止换行。确保在Xcode的配置项中进行了设置。
- 方法的花括号以及其它花括号(
if
/else
/switch
/while
等等)总是跟语句在同一行开始,但是在新的一行中结束。
ifuser.isHappy { //Do something } else//Do something else}
使用美式英语拼写以匹配苹果公司的API
优选:
var color = "red"
不建议使用:
if
/else
/switch
/while
等等)总是跟语句在同一行开始,但是在新的一行中结束。
ifuser.isHappy { //Do something } else//Do something else}
}
使用驼峰法为类、方法、变量等等取一个描述性强的名字。模块范围的类名以及常量名称要以大写字母开头,而方法名跟变量名则应该以小写字母开头。
let MaximumWidgetCount 100 class WidgetContainer widgetButton: UIButton widgetHeightPercentage 0.85MAX_WIDGET_COUNTapp_widgetContainerwButwHeightPct 对于普通函数以及构造函数名称,除非上下文含义非常清楚,对所有的参数都加以命名是更为推荐的做法。如果外部参数名称可以使得函数调用更具有可读性,那么请带上它。
对于方法,遵循苹果公司的命名标准,在方法名中提及第一个参数:
dateFromString()函数真是太棒了。 在你的init()方法中调用convertPointAt(column:, row:)。 timedActiondelay perform:)的返回值可能为nil。 Guideline对象只有两个方法:combineWithStringoptions:)跟upvoteBy()。你不应该直接调用数据源方法tableViewcellForRowAtIndexPath:)。
Swift中的类型会自动加入包含它们的模块的命名空间。所以即使是为了最小化命名冲突的可能性,前缀也是不必要的。如果来自于不同模块的两个名称冲突了,可以通过在名称前面加上模块名以消除歧义:
不应该在自己创建的类型上加前缀。
如果需要将Swift类型暴露在Objective-C环境中使用,请按照以下方式提供合适的前缀(前缀的命名请参考Objective-C风格指南):
Swift中,每条语句后的分号都不是必需的。只有在一行中有多条语句时才需要添加上分号。
请不要在一行中写上用分号隔开的多条语句。
这条规则的唯一例外就是for-conditional-increment
结构,该结构中分号是必需的。不过,请尽可能地使用另外一种结构,for-in
循环。
swift"not a scripting language"
"not a scripting language";
请注意:Swift与JavaScript不同,在后者中省略分号通常是不安全的。
下面的代码是一个很有标准范儿的类定义,请参考:
x: Int
跟Circle: Shape
。 考虑到在Swift中访问一个对象的属性或者调用它的方法并不需要使用self
,所以请避免使用它。
需要使用self
的唯一理由就是在初始化一个类或者结构体时,使用其在属性名和参数之间加以区分:
保持函数声明短小精悍,尽量在一行中完成声明,同时还包含了开括号:
尽可能地使用尾闭包语法。在所有的情况下都需要给闭包参数一个描述性强的名称:
尽可能地使用Swift原生类型。Swift提供了对Objective-C的桥接所以在需要的时候仍然可以使用全部的Objective-C方法:
width
120.0 //DoublewidthStringwidthbridgeToObjectiveC().stringValue //StringNSNumber
//NSNumberwidthStringNSString //NSString 在Sprite Kit的代码中,如果CGFloat
可以避免过多的转换而使得代码简洁明了,那么请用上它。
常量通过let
关键字定义,而变量使用var
关键字定义。任何值如果是一个不变量,那么请使用let
关键字恰如其分地定义它。最后你会发现自己喜欢使用let
远多于far
。
Tip:有一个方法可以帮你符合该项规则,将所有值都定义成常量,然后编译器提示的时候将其改为变量。
在nil值可能出现的情况下,将变量跟函数返回值的类型通过?
定义成Optional。
只有在确定实例变量会在初始化之后才被使用的情况下,通过!
将其定义为隐式解包类型(Implicitly Unwrapped Types),比如说会在viewDidLoad
中被创建的子视图。
在访问一个Optional值时,如果该值只被访问一次,或者之后需要连续访问多个Optional值,请使用链式Optional语法:
Swift的编译器可以推断出变量跟常量的类型。可以通过类型别名(在冒号后面指出其类型)提供显式类型,不过大多数情况下这都是不必要的。
保持代码紧凑,然后让编译器推断变量跟常量的类型。
message
"Click the button"currentBoundscomputeViewBoundsmessage
currentBoundsCGRect 注意:遵循这条准则意味着描述性强的名称比之前更为重要了。
对于for
循环,优选for-in
风格而不是for-condition-increment
风格:
for
_0..5println"Hello five times"personattendeeList// do somethingi0;<5i++count[i] 笑脸 笑脸对于raywenderlich.com来说是一个格外重要的风格特征。使用正确的笑脸可以表示出对某个主题的无穷尽的高兴以及兴奋程度。选用了]
是因为它在ASCII艺术可以表示得最大的笑脸。而闭圆括号)
因为给人一种“呵呵”的感觉而不建议使用。
优选:
:]
不建议使用:
:)
本文版权归 raywenderlich.com 、The Official raywenderlich.com Swift Style Guide项目以及所有贡献者所有。