CSDN移动将持续为您优选移动开发的精华内容,共同探讨移动开发的技术热点话题,涵盖移动应用、开发工具、移动游戏及引擎、智能硬件、物联网等方方面面。如果您想投稿、参与内容翻译工作,或寻求近匠报道,请发送邮件至tangxy#csdn.net(请把#改成@)。
本文出自: The Official raywenderlich.com Swift Style Guide ,译文出自: SwiftGG
这篇Swift风格指南与你看到的其他的指南有所不同,此篇指南主要焦点集中在打印和Web展示的可读写上。我们创建此篇风格指南的目的,是为了让我们的图书、教程以及初学者套件中的代码保持优美和一致,即使我们有很多不同的作者共同编写这些图书。
我们的首要目标是一致性,可读性和简洁性。
还在使用Objective-C?也可以参考我们的 Objective-C风格指南 (中译版)。
使用驼峰式的描述性命名方式,为类,方法,变量等命名。类名的首字母应该大写,而方法和变量的首字母使用小写字符。
推荐做法:
private let maximumWidgetCount = 100 class WidgetContainer { var widgetButton: UIButton let widgetHeightPercentage = 0.85 }
不推荐做法:
let MAX_WIDGET_COUNT = 100 class app_widgetContainer { var wBut: UIButton let wHeightPct = 0.85 }
对于函数和初始化方法,推荐对所有的参数进行有意义的命名,除非上下文已经非常清楚。如果外部参数命名可以使得函数调用更加可读,也应该把外部参数命名包含在内。
func dateFromString(dateString: String) -> NSDate func convertPointAt(#column: Int, #row: Int) -> CGPoint func timedAction(#delay: NSTimeInterval, perform action: SKAction) -> SKAction! // 调用方式如下: dateFromString("2014-03-14") convertPointAt(column: 42, row: 13) timedAction(delay: 1.0, perform: someOtherAction)
对于方法来说,参照标准的苹果惯例,方法命名含义要引用到第一个参数:
class Guideline { func combineWithString(incoming: String, options: Dictionary?) { ... } func upvoteBy(amount: Int) { ... } }
使用首字母大写的驼峰命名规则来命名枚举值:
enum Shape { case Rectangle case Square case Triangle case Circle }
当我们在文章中(教程,图书,注释等)需要引用到函数时,需要从调用者的视角考虑,包含必要的参数命名,或者使用_表示不需要命名的参数。
从你自身实现的init中调用convertPointAt(column:row:)。
如果你调用dateFromString(_:),需要保证你提供的输入字符串格式是”yyyy-MM-dd”。
如果你需要在viewDidLoad()中调用timedAction(delay:perform:),记得提供调整后的延迟值和需要处理的动作。
你不能直接调用数据源方法tableView(_:cellForRowAtIndexPath:)
当你遇到疑问时,可以看看Xcode在jump bar中是如何列出方法名的 —— 我们的风格与此匹配。
Swift类型自动被模块名设置了名称空间,所以你不需要加一个类的前缀。如果两个来自不同模块的命名冲突了,你可以附加一个模块名到类型命名的前面来消除冲突。
import SomeModule let myClass = MyModule.UsefulClass()