命名(Naming)

最后更新于:2022-04-01 04:55:23

## 命名(Naming) 使用驼峰式的描述性命名方式,为类,方法,变量等命名。类名的首字母应该大写,而方法和变量的首字母使用小写字符。 推荐做法: ~~~ 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) { ... } } ~~~ ### 枚举(Enumerations) 使用首字母大写的驼峰命名规则来命名枚举值: ~~~ enum Shape { case Rectangle case Square case Triangle case Circle } ~~~ ### 文章(Prose) 当我们在文章中(教程,图书,注释等)需要引用到函数时,需要从调用者的视角考虑,包含必要的参数命名,或者使用`_`表示不需要命名的参数。 > 从你自身实现的`init`中调用`convertPointAt(column:row:)`。 > > 如果你调用`dateFromString(_:)`,需要保证你提供的输入字符串格式是”yyyy-MM-dd”。 > > 如果你需要在`viewDidLoad()`中调用`timedAction(delay:perform:)`,记得提供调整后的延迟值和需要处理的动作。 > > 你不能直接调用数据源方法`tableView(_:cellForRowAtIndexPath:)` 当你遇到疑问时,可以看看Xcode在`jump bar`中是如何列出方法名的 —— 我们的风格与此匹配。 [![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-11-17_564b00a5611f5.png)](https://github.com/raywenderlich/swift-style-guide/raw/master/screens/xcode-jump-bar.png "Methods in Xcode jump bar")Methods in Xcode jump bar ### 类的前缀(Class Prefixes) Swift类型自动被模块名设置了名称空间,所以你不需要加一个类的前缀。如果两个来自不同模块的命名冲突了,你可以附加一个模块名到类型命名的前面来消除冲突。 ~~~ import SomeModule let myClass = MyModule.UsefulClass() ~~~
';