iOS客户端开发规范

本文详细介绍了iOS客户端开发的规范,包括文件分类、命名规则、注释标准、UI布局文件的处理、代码格式化要求以及扩展和修改功能的原则。强调了命名清晰、注释同步更新、代码组织结构的重要性,并提供了具体的示例。
摘要由CSDN通过智能技术生成


一、文件分类

在相应的模块下建立文件夹,

所有ViewController都放在ViewController文件夹下,所有的View放在view文件夹下,所有model放在model文件夹下,Category放在Category文件夹下,功能型类放在Tools文件夹下,数据库或CoreData操作放在DAO文件夹下。

二、命名规则

1、含义清楚,尽量做到不需要注释也能了解其作用,若做不到,就加注释

2、使用全称,不适用缩写

3、文件名使用:大驼峰法+后缀  eg:CreateNoteViewController、NoteListCell、NoteDetailView等(首字母大写),在文件顶部的注释中简要说明该类的作用或页面名称。

4、文件名后缀ViewController: 使用ViewController做后缀eg: MFHomeViewController、View: 使用View做后缀 eg: MFAlertView 、 UITableCell:使用Cell做后缀 eg: MFNewsCell、 Protocol: 使用Delegate或者DataSource作为后缀 eg: UITableViewDelegate、UITableViewDataSource  UI控件依次类推

5、私有变量、property变量命名要用小驼峰法(首字母小写),要体现出该变量和函数的意义。私有变量放在 .m 文件中声明

6、宏命名

全部大写,单词间用 _ 分隔。[不带参数]

eg: #define THIS_IS_AN_MACRO @"THIS_IS_AN_MACRO"

以字母 k 开头,后面遵循大驼峰命名。[不带参数]

eg:#define kWidth self.frame.size.width

小驼峰命名。[带参数]

#define testMyCondition(condition) (condition*5)

 

7、Enum

Enum类型的命名用大驼峰法

Enum中枚举内容的命名需要以该Enum类型名称开头

eg:

1 typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) {

2     AFNetworkReachabilityStatusUnknown= -1,

3    AFNetworkReachabilityStatusNotReachable = 0,

4    AFNetworkReachabilityStatusReachableViaWWAN = 1,

5    AFNetworkReachabilityStatusReachableViaWiFi = 2

6     };

 

8、Delegate命名

类的实例必须为回调方法的参数之一, 如

  -(NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section

回调方法的参数只有类自己的情况,方法名要符合实际含义, 如:

  -(NSInteger)numberOfSectionsInTableView:(UITableView*)tableView

以类的名字开头(回调方法存在两个以上参数的情况)以表明此方法是属于哪个类的, 如:

  -(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath *)indexPath

使用did和will通知Delegate已经发生的变化或将要发生的变化, 如:

  -(NSIndexPath*)tableView:(UITableView*)tableView willSelectRowAtIndexPath:(NSIndexPath*)indexPath;
  -(void)tableView:(UITableView*)tableView  didSelectRowAtIndexPath:(NSIndexPath*)indexPath;

9、私有方法及变量声明

变量声明在.m文件中最上方的扩展的花括号中

eg:

方法和属性声明在花括号外

三、注释

1、合理的命名的简单函数可以不需要注释

2、注释需要与代码同步更新

3在代码量较大逻辑较复杂的函数前要用标准注释对函数进行注释如下标准文档注释(光标放在函数名前组合键“option+command+\”调出)

/**

 函数功能描述

 @param message 参数描述

 @param view 参数描述

 @return 返回类型描述

 */

4、在较为复杂的ViewController中会涉及到较多函数和代理方法的实现,为了便于阅读和修改要在模块最上面加上

将函数分组

#pragma mark 模块描述信息。

比如要将接口调用的方法放在一起、tableView的代理方法、DataSource方法的实现放在一起,viewcontrollerviewdidload viewWillApear等生命周期函数放在一起。

5、属性注释示例
/// 学生

@property (nonatomic, strong) Student *student;

四、UI布局文件

如果使用InterfaceBuilderStoryboard进行界面布局

1Xib文件的命名与其对应的.h文件保持相同

2Xib文件中控件的组织结构要合理,Xib文件中控件需要有合理的可读性强的命名,方便他人理解;

3、文件的ID要和类名一致如LoginViewcontroller.m 对应的LoginViewcontroller.xibID应为“LoginViewcontroller

五、格式化代码

1、指针 "*" 位置:定义一个对象时,指针 "*" 靠近变量,eg:NSString *userName;

2、方法的声明和定义:在 - + 返回值之间留一个空格,方法名和第一个参数之间不留空格;

3、代码缩进

使用xcode 默认缩进,即 tab = 4空格

使用xcode re-indent 功能定期对代码格式进行整理

4、相同类型变量声明需要独行声明

  例子:

CGFloat oringX =frame.origin.x;

CGFloat oringY =frame.origin.y;

CGFloat lineWidth =frame.size.width;

5MethodMethod之间空一行

6、大括号写法

对于类中的method:左括号另起一行写(遵循苹果官方文档)

method中可以不另起一行

其他使用场景: 左括号跟在第一行后边

任何需要写大括号的部分,不得省略,例如在if-else语句中就算只有一行代码也要用大括号括起来。

六、扩展和修改功能原则

之前写好并测试通过的类如果不是修改bug或者页面如果需要添加方法请使用Category、如果需要添加属性请使用继承,原则就是不破坏已经测试完成的代码。


参考:http://www.cnblogs.com/gfxxbk/p/5469017.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值