前言
好的编码习惯是一个程序员的开始,编码规范应该是每个程序员最基础的职业素养。我还记得我刚接触编程开发的时候,一位资深程序员对我说的话,“你的写代码可以毫无扩展性、健壮性、结构性, 你写的代码也可以bug满天飞,甚至没有完成需求,但是你首先要解决的就是你写出的代码要让我看着很舒服,编码要规范, 其次你才能去想其他的东西”。 这些话,让我第一次认识到编码规范的重要性,也真真切切的在这上面下足了功夫, 虽然目前自己写的代码仍不能尽善尽美,可见编程之路漫漫其修远兮 吾将上下而求索,与君共勉之。
网上关于编码规范的文章多如牛毛, 自己平时也会看一些写的很好文章。 本可不写, 但根据自己的理解还是有必要写一篇,一自己加深印象,二团队也确实需要, 毕竟代码规范对于多人开发及后期维护的重要性不言而喻。
命名规范
编码基础原则
我们尽可能遵守 Apple 的命名约定, 其推荐使用长的,描述性强的方法和变量名,使其阅读起来更加清晰易懂。不能随意使用缩写,导致其他人员阅读代码困难。更不能用些汉语拼音,甚至缩写。The coding guide for cocoa
驼峰命名法
针对属性,变量,方法等均采用小写字母开头的驼峰命名准则。驼峰命名法
前缀
类名,协议名等都应该有前缀,根据 Apple Guide 建议类名前缀应该使用 2 个英文以上最好,因为 Apple 写的框架都是直接使用 2 个英文字母开头, 当然使用 3 个字母 能有效防止类名重复影响工程。而前缀则以项目名字缩写为最好,例 山西证券 英文 Shanxi Security 那 文件名应以 SS 为前缀 例 SSHomeViewController
方法命名
通用规则
使用小写字母开头,后面嵌套连接的字母使用大写开头。
对于采取动作行为的方法,使用动词开头,但是不要直接使用 do或者does,如果该方法返回接收方的属性,不要用get
推荐:
- (NSSize)cellSize;
不推荐:
- (NSSize)getCellSize;
假如方法名过长的时候可以采用每个参数独占一行的规则,并保持每个参数分号 : 对齐的方式排列。 注: 参数越少耦合越低 出错率也越低 尽量写少参数方法
推荐:
- (BOOL)registerPlatformWithType:(SZShareType)type
appId:(NSString *)appId
universalLink:(NSString *)universalLink;
不推荐:
- (BOOL)registerPlatformWithType:(SZShareType)type appId:(NSString *)appId universalLink:(NSString *)universalLink;
实例方法和类方法 (-/+) 符号后面应该保持一个空格, 如: - (void)。
推荐:
+ (instancetype)defaultManager;
不推荐:
+(instancetype)defaultManager;
构造器方法
你可以用情态动词(前面有can, should, will等动词的动词)来阐明意思,但不要用do或does
推荐:
- (void)canRemoveObject;
不推荐:
- (void)doRemoveObject;
代理方法命名
推荐:
- (void)headerView:(SZHomeHeaderView *)headerView didSelectedItemAtIndex:(NSInteger)index;
不推荐:
- (void)didSelectedItemAtIndex:(NSInteger)index;
你可以用will should did 来表示将要发生的事情 或者已经发生过的事情
例:
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;
其他方法命名
如果你子类化一个Cocoa框架类(比如NSView或UIView),你想要绝对确保你的私有方法有不同于超类中的名字,你可以添加你自己的前缀到你的私有方法
例:
- (void)ss_viewWillAppear:(BOOL)animated;