iOS开发规范

1.宏定义

1.1 常量和局部变量等建议以小写字母k开头,enum可按业务逻辑及相关上下文文自行决定是否以k开头
1.2 宏定义的宏定义在其值为表达式的情况下要求用小括号包围,如:#definekAAA
(123+234) 非表达式的情况不作强制要求,建议在符合需求的情况下加小括号

2.尽量使用static const来定义常量而不是#define,对于需要对外公开名字而隐藏具体值的应使用extern的方式定义

例1: .m中定义 static const NSTimeInterval kAnimationDuration = 0.3;
例2: .h中定义 extern NSString *const EOCStringConstant;
例3: .m中定义 NSString *const EOCStringConstant = @"VALUE";

3.缩进与换行

3.1 代码缩进4个空格,不要使用Tab(Xcode可以设置)
3.2 大括号跟在行末 (大括号前加一个空格)
3.3 只有一行的逻辑也用{}包起来
3.4 多行判断逻辑的 &&、||放在行首,与第一行判断条件对齐

 if (aaaaa
     && bbb
     && ccc)

3.5 if else 中else 与左括号有一个空格

         if (a==b) {
            NSLog(@"else与左右边括号有一个空格");
         } else {
            NSLog(@"else与左右边括号有一个空格");
         }

4.方法声明、定义中-/+后面跟一个空格,后面除参数之间外没有其他空格

      - (void)aaa:(NSString *)str param:(int)x {
         int *a, b;
         }

5.protocol放在<>中时与前面的类型之间不要有空格

      @interface MyProtocoledClass : NSObject {
         id _delegate;
       }
      @end 

6.较大的block应该独立出来成为一个局部变量,而不是直接inline写在调用方法参数中,如20行以上

7.NSArray/NSDictionary的literal前后加空格(整体内容前后各有一个空格):

NSArray *array = @[ [foo description], @"Another String" ];
NSDictionary *dict = @{ NSName : [NSColor redColor] };
NSArray *array = @[
@"This",
@"is",
@"an",
@"array" 
];

8.空行:同一代码块内为保持逻辑分开可在中间空一行分隔,不要空多行,方法末尾不要空行

9.代码注释:

9.1尽量解释清楚某段代码为什么要这么做,特别是在有tricky或复杂的判断逻辑的地方
9.2头文件中声明的方法、接又强制加注释
9.3用#pragma mark组织类的内容,方便其他人阅读
9.4多行注释格式要求

       /**
        函数方法的功能
        参数
        返回值
       */

9.5同行注释在代码后面空两格

      @property (nonatomic, strong) UIView *view; //注释"//"前空两空格

10.成员变量与方法

10.1自定义成员变量开头要加下划线'_ '
10.2自定义私有方法添加前缀 (在这里我们统一写为"p_")
10.3局部变量、成员变量名、方法名首字母小写,类名首字母大写
10.4Objective-C代码中的变量名一般不要使用下划线分隔

11.init和dealloc方法中使用成员变量而不是属性,避免在init里加太复杂逻辑

 - (instancetype)init {
   self = [super init];
   if (self) {
       _bar = [[NSMutableString alloc] init];  // good
   } 
   return self;
}

- (void)dealloc {
   _bar = nil;
}

12. 对于属性和成员变量的选择可依以下原则:

12.1只有类自己内部使用的情况:若后续可能有延迟加载等逻辑,优先选用属性;
否则可使用成员变量或属性,不强制统一
12.2公开给别的模块调用的数据应使用属性

13.init方法应该返回instancetype

14.避免过多使用category,过多的category会使程序加载变慢

15.每行最长100个字符(Xcode设置Preferences > Text Editing > Page guide at column: 100)

16.在类的头文件中尽量少引用其他头文件,这样做可以减少编译时间

17.多用字面语法,少用与之等价的方法

17.1声明时的字面量语法:
在声明NSNumber,NSArray,NSDictionary时,应该尽量使用简洁字面量语法。

   NSNumber *intNumber = @1;
   NSNumber *floatNumber = @2.5f;
   NSArray *array = @[ [foo description], @"Another String" ];
   NSDictionary *dict = @{ NSName : [NSColor redColor] };

17.2. 集合类取下标的字面量语法:
NSArray,NSDictionary,NSMutableArray,NSMutableDictionary

   NSString *cat = animals[0];
   NSString *iphone = dict[@"phone"];

18.总是为第三方类的分类名称前加前缀

例如: - (NSString*)ana_urlEncodedString

19.当遍历集合元素的时候,少用for循环,建议多使用块枚举,因为相当于传统的for循环,它更加高效,简洁,还能获取到用传统的for循环无法提供的值

20.尽量使用不可变对象

你可能感兴趣的:(iOS开发规范)