Objective-C开发编码规范

针对本身的编码检查问题,改正为如下编码规范:闭包

1.函数

协议( Protocols )编码

在书写协议的时候注意用 <> 括起来的协议和类型名之间是没有空格的,好比 IPCConnectHandler(), 这个规则适用全部书写协议的地方,包括函数声明、类声明、实例变量等等:spa

2.code

闭包( Blocks )对象

根据 block 的长度,有不一样的书写规则:接口

  • 较短的 block 能够写在一行内。事件

  • 若是分行显示的话, block 的右括号 } 应该和调用 block 那行代码的第一个非空字符对齐。get

  • block 内的代码采用 4 个空格 的缩进。编译器

  • 若是 block 过于庞大,应该单独声明成一个变量来使用。

  • ^ 和 ( 之间, ^ 和 { 之间都没有空格,参数列表的右括号 ) 和 { 之间有一个空格。

 

3.

字典

构造字典时,字典的 Key 和 Value 与中间的冒号 : 都要留有一个空格,多行书写时,也能够将 Value 对齐:

// 正确,冒号 ':' 先后留有一个空格
NSDictionary *option1 = @{
NSFontAttributeName : [NSFont fontWithName:@ "Helvetica-Bold"  size:12],
NSForegroundColorAttributeName : fontColor
};
 
4.
命名问题
1>
命名应该尽量的清晰和简洁,但在 Objective-C 中,清晰比简洁更重要。因为 Xcode 强大的自动补全功能,咱们没必要担忧名称过长的问题。

不要使用单词的简写,拼写出完整的单词:

2>一致性

整个工程的命名风格要保持一致性,最好和苹果 SDK 的代码保持统一。不一样类中完成类似功能的方法应该叫同样的名字,好比咱们老是用 count 来返回集合的个数,不能在 A 类中使用 count 而在 B 类中使用 getNumber 。

 

 5.
实例变量

命名实例变量,在变量名前加上 _ 前缀(有些有历史的代码会将 _ 放在后面 ),其它和命名属性同样:

 
@implementation MyClass {
BOOL _showsTitle;
}
 
6.

命名常量( Constants )

若是要定义一组相关的常量,尽可能使用枚举类型( enumerations ),枚举类型的命名规则和函数的命名规则相同:

// 定义一个枚举,注意带有 `_` 的名称是不会被使用的
typedef enum _NSMatrixMode {
NSRadioModeMatrix = 0,
NSHighlightModeMatrix = 1,
NSListModeMatrix = 2,
NSTrackModeMatrix = 3
} NSMatrixMode;
 
7.
定义常量
 
使用 const 定义浮点型或者单个的整数型常量,若是要定义一组相关的整数常量,应该优先使用枚举。常量的命名规范和函数相同:
const float NSLightGray;
 
8.
宏定义
 
不要使用 #define 宏来定义常量,若是是整型常量,尽可能使用枚举,浮点型常量,使用 const 定义。 #define 一般用来给编译器决定是否编译某块代码.
 
9.

命名通知( Notifications )

通知经常使用于在模块间传递消息,因此通知要尽量地表示出发生的事件,通知的命名范式是:

 
[ 触发通知的类名 ] + [Did | Will] + [ 动做 ] + Notification
 
10.
注释
定义在头文件里的接口方法、属性必需要有注释!
// 注释(注意空格问题)
 
11.

BOOL 的使用

BOOL 在 Objective-C 中被定义为 signed char 类型,这意味着一个 BOOL 类型的变量不单单能够表示 YES(1) 和 NO(0) 两个值,因此永远不要将 BOOL 类型变量直接和 YES 比较;

一样的,也不要将其它类型的值做为 BOOL 来返回,这种状况下, BOOL 变量只会取值的最后一个字节来赋值,这样极可能会取到 0 ( NO )。可是,一些逻辑操做符好比 &&,||,! 的返回是能够直接赋给 BOOL 的;

另外 BOOL 类型能够和 _Bool,bool 相互转化,可是不能和 Boolean 转化。  (啥意思,暂时还没懂,知道的告诉我哟!!!)

 

12.

Delegate 要使用弱引用

一个类的 Delegate 对象一般还引用着类自己,这样很容易形成引用循环的问题,因此类的 Delegate 属性要设置为弱引用。

13.

代码中注意大量的输出语句,不必;

定义方法以空行隔开;

代码中注意大量的空行,注意代码的紧凑性;

注意封装,代码的硬编码问题;

宏定义注意所有大写,值用()括起来.

 

暂时总结以上几点,也欢迎大神们指教!!

相关文章
相关标签/搜索