iOS学习:iOS代码规范
- 作者感言
- 阅读前言
- iOS代码规范
- Import规范
- Define规范
- Paragma Mark 规范
- Interface规范
- implementation规范
- 实例规范
- NSDictionary规范
- NSArray规范
- 函数规范
- If-Else规范
- For-In For 规范
- Block规范
- 运算符规范
- 命名规范
- 实例命名规范
- Property命名规范
- Interface-class命名规范
- Block命名规范
- For-In命名规范
- 布局框架
- 文件夹层次结构
- MVC架构
- MVVM架构
本文已收录到GitHub, 喜欢的朋友可以Star一下: iOSRegulations
作者感言
这篇文章, 部分是收集了网上的iOS开发爱好者的代码规范, 以及我自己的理解, 不一定完全满足所有人, 希望多多见谅, 也同样感谢支持我完成这篇文章的朋友.
刚开始写这篇文章的时候, 我无从下手, 直到我朋友给了我一份JAVA的开发文档规范, 我才慢慢有了清晰的思路, 中间迭代了许多版本, 一次次的修改文章的排版, 关键字的高亮, 以及代码的高亮.
一点点的编写, 一次次的修改, 让我对代码规范有了更深刻的理解, 曾经有人说过, 印度人写代码, 100个人所写的, 看起来像一个人所写的, 不是说印度阿三开挂了, 是他们遵循了一个规范, 无规矩不成方圆, 也就是这个道理.最后:
如果你有更好的建议或者对这篇文章有不满的地方, 请联系我, 我会参考你们的意见再进行修改, 联系我时, 请备注iOS代码规范文档, 祝大家学习愉快~谢谢~
Cain(罗家辉)
zhebushimengfei@qq.com: 联系方式
350116542: 腾讯QQ
阅读前言
@(Reading Preface)
- 在阅读代码规范之前,必须先去下载两个插件<XAlign, VVDocumenter>。
- 文档的目的是描述一些关于iOS编程的标准和惯例,并指导编写稳定的iOS代码。
- 这些都是基于健全的、充分证明过的软件工程基础上的,并使得代码容易理解、维护和增。
- 更重要的是,遵循这些规则,iOS开发人员的编程效率将会显著的得到提高。
- 因为不必花费时间来重新编写代码,而是更容易的在开发过程中,对代码进行修改。
- 最后,遵循这些规则,可以保持代码的连续性和粘性,提升开发组的效率。
iOS代码规范
@(Code)[Standard]
#Import规范
- 当一个
Controller或者一个Class中需要用到不同的类和Define时, 我们应当把#import划分.
- 划分原则: 哪个
Controller或者Class是本Controller或者Class的次级就放在一起, 公共Controller或Class就与之前的空一行, 紧跟着下面.
比如:
#import "AspManageServicePasswordViewController.h"
#import "AspResetServicePasswordViewController.h"
#import "AspServicePasswordView.h"#import "NorNavShareView.h"#import "AppDelegate.h"
#import "BCTabBarView.h"#import "ModifyPwdViewController.h"
#import "AspLoginVC.h"
#Define规范
- 使用
#define时, 必须要以数值对齐.
比如:
#define kLabelSize 20
#define kLabelMargins 20#define kConfirmBottom 63
错误写法:
#define kLabelSize 20
#define kLabelMargins 20#define kConfirmBottom 63
- 使用
#define定义预编译宏时, 应当把宏定义成全部大写字母, 且与“_”分隔, 此方法是苹果官方所推荐.
比如:
#define NS_AVAILABLE(_mac, _ios) CF_AVAILABLE(_mac, _ios)
#define NS_AVAILABLE_MAC(_mac) CF_AVAILABLE_MAC(_mac)
#define NS_AVAILABLE_IOS(_ios) CF_AVAILABLE_IOS(_ios)
错误写法:
#define kCancelBottom 25
#define kCancelHeight 44
#define kCancelMargins 25
- 在代码中尽量减少在代码中直接使用数字敞亮, 而使用
#define来进行声明常量或运算.
比如:
#define kTableViewHeight 300
#define kTableViewCellHeight label.height + view.height
错误写法:
- (void)viewDidLoad {[super viewDidLoad];self.tableView.frame = CGRectMake(0, 64, 320, 660);
}
- 尽量代码中得重复计算, 比如在代码中很多地方需要使用到屏幕的宽度, 然后再进行计算, 我们就可以把屏幕的宽度进行抽取封装成
#define.
比如:
#define AspScreenWidth ([[UIScreen mainScreen] bounds].size.width)
#define kTableViewHeight 300
#define NAV_VIEW_HEIGHT 64- (void)viewDidLoad {[super viewDidLoad];self.tableView.frame = CGRectMake(0, NAV_VIEW_HEIGHT, AspScreenWidth, kTableViewHeight);
}
错误写法:
- (void)viewDidLoad {[super viewDidLoad];self.tableView.frame = CGRectMake(0, 64, 320, 660);
}
#Paragma Mark 规范
- 使用
#pragma mark时紧挨着方法名, 且与上一个方法的间距为1空行.
比如:
- (void)mineViewModel {// Code Body
}#pragma mark - TableViewRefresh
- (void)pulldownRefresh:(AspTableView *)tableView {[self.mineViewModel requestDataWithSuccess:nil failure:nil];
}
错误写法:
- (void)mineViewModel {// Code Body
}#pragma mark - TableViewRefresh- (void)pulldownRefresh:(AspTableView *)tableView {[self.mineViewModel requestDataWithSuccess:nil failure:nil];
}
- (void)mineViewModel {// Code Body
}
#pragma mark - TableViewRefresh
- (void)pulldownRefresh:(AspTableView *)tableView {[self.mineViewModel requestDataWithSuccess:nil failure:nil];
}
- 当两个方法相近或者都是同一个模块里的方法, 使用
#pragma mark加注释来导航代码.
比如:
#pragma mark - Some Mothed
- (void)someMothedOne;
- (void)someMothedTwo;
- (void)someMothedThree;
错误写法:
#pragma mark -
- (void)someMothedOne;
- (void)someMothedTwo;
- (void)someMothedThree;
- (void)someMothedOne;
- (void)someMothedTwo;
- (void)someMothedThree;
@Interface规范
- 在
@Interface里遵循的Delegate, 或者是DataSource方法, 必须以,间隔, 且空一格.
比如:
@interface AspEasyOwnResetPasswordViewController () <UITextFieldDelegate, MBAlertViewDelegate, UITableVIewDelegate, UITextViewDelegate, UIAlertViewDelegate,
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
