Objective-C Style Guide
最近看了很多OC方面的编码风格推荐, 个人认为编码规范不管对于个人开发还是团队开发都是非常重要的, 这里总结出来, 给大家提供一个参考.
语言
使用美式英语.
|
|
组织代码
使用 #pragma mark -
组织代码.
|
|
条件语句
|
|
方法
方法声明中, 应该在(-/+ 符号)的后面留一个空格.
|
|
变量
变量应该尽可能的用描述性的语言命名, 应该避免使用单字母来命名变量除了用于
for()
循环里.*表示变量是一个指针, 例如
NSString *text
不要写成NSString* text
, 也不要写成NSString * text
, 除非是在定义常量的情况下.属性定义无论在何时都应该是用来代替实例变量定义, 应该避免直接使用实例变量, 除非在初始化方法中(
init
,initWithCoder:
等),dealloc
方法中和实例变量对应的setter
和getter
方法中.
|
|
命名
遵循 Apple 命名规范
|
|
字母前缀(例如SR
)应该用于类名和常量, 但是 Core Data 的实体名应该忽略前缀.
常量应该使用驼峰式命名规范, 要与类名有相关性要见面知意.
|
|
- 属性和局部变量应该使用开头字母小写的驼峰式命名规范.
- 实例变量应该使用开头字母小写的驼峰式命名规范,并且前缀是下划线.
- 局部变量不应该包含下划线.
注释
注释应该是用来解释为什么, 而不是用来说明是什么.
init 和 deallocdealloc
方法应该放在 implementation
的上面, init
应该直接放在 dealloc
方法的下面.
|
|
文字变量
NSString
,NSDictionary
,NSArray
, 和NSNumber
这些文字变量无论在何时都应该被用来创建不可变的实例对象.- 注意不要把
nil
传入到了NSArray
和NSDictionary
中,因为这样会导致c程序崩溃.
|
|
CGRect 函数
当访问 x
, y
, width
,height
,应该使用 CGGeometry
函数,而不应该直接访问结构的成员.
|
|
常量
常量和宏都可以的情况下, 推荐使用常量.
|
|
枚举类型
|
|
Case 语句
当在switch
中使用枚举类型的时候 default
并不需要.
|
|
布尔值判断
- 既然
nil
等同于NO
那就没有必要在条件语句中进行比较 - 永远不要直接把某些东西与
YES
相比较.
|
|
BOOL
的例子
|
|
BOOL
属性的名字应该取名为形容词, 属性名可以忽略 ‘is’ 前缀, 但 getter
方法要使用传统的命名.
|
|
单例
单例对象应该使用安全线程机制来创建它们的共享实例.
|
|
这能够防止某些时候可能出现各种程序崩溃的问题
(未完持续更新)
参考
官方 OC Style Guides:
- The Objective-C Programming Language
- Cocoa Fundamentals Guide
- Coding Guidelines for Cocoa
- iOS App Programming Guide
其他 OC Style Guides: