iOS开发规范

来源:互联网 发布:荣威rx5发动机 知乎 编辑:程序博客网 时间:2024/05/20 22:36

前言

Objective-C开发中,所有的编码规范都以苹果官方代码为标准,如果编码过程的遇到的问题在本文档中没有涉及到,请参考苹果官方代码的格式。

苹果推崇的编码规范核心思想是:可读性高。不随便使用缩写,分段式长函数名都是基于此思想。在实际编码过程中,随时以此思想为准则。

 

一、命名

1.清晰,无歧义。

insertObject: atIndex:(好)

insert:at:(不清晰)

方法名称必须明确表达出该方法的用途,驼峰名中第一段须表示出该方法的主要动作或者宿主对象,例如可采用这种方式:btnPressed,使用第一段 btn 用于表示这是一个按钮方法。

2.不要随便缩写名称,即使很长也要拼写完整。

setBackgroundColor:(好)

setBkgColor:(不清晰)

可以使用的常见缩写

alt          Alternate.

app          Application.

calc         Calculate.

func         Function.

horiz        Horizontal.

info         Information.

max          Maximum.

min        Minimum.

msg        Message.

rect       Rectangle.

temp       Temporary.

vert       Vertical.

btn        Button

dest       Destination

3.前缀。

在实际编码中,命名 class,protocol, structuretypedef等时,要使用前缀。命名方法时,不使用前缀。因为方法处于所在类的命名空间中。

例:QTXBaseViewController,而此类的中的方法不需要再加前缀

4.书写规范,使用camel命名法。

正常情况下,方法名小写第一个单词的首字符,大写后续所有单词的首字符。如: fileExistsAtPath:isDirectory:

5.类扩展(Category)。

头文件的命名形式为:原类名+“Additions”

如:UIImageView+AFNetworking.h

6.子类命名规范。

后缀必须是父类的类型:

例如UItableView的子类,命名为 *TableView。以便于识别类型。

如果是NSObject类型的,需要指明本类的作用(如,managermodel等)

7.代理命名。

参考官方的命名方式:第一部分是类本身,第二部分表明目的或事件。

  • (CGFloat)tableView:(UITableView )tableView heightForRowAtIndexPath:(NSIndexPath )indexPath;
  • (void)tableView:(UITableView )tableView didSelectRowAtIndexPath:(NSIndexPath )indexPath;

用于通知委托对象操作即将发生或已经发生的方法名中要使用didwill

  • (void) browserDidScroll:(NSBrowser *)sender;

用于询问委托对象可否执行某操作的方法名中使用 should

  • (BOOL) windowShouldClose:(id)sender;

二、格式

1.不同的方法间要空1行。

2.条件,循环,选择语句,整个语句结束,需要空1行。

3.大的类别不同要空2行。

4.星号(*)要靠近变量,不靠近类型。

UIColor *textColor;

5.注释应与其描述的代码相近,对代码的注释应放在其上方或右方(对单条语句的注释)

三、其他细节

1.对类中的不同方法进行分组,用 #pragma mark来区分。

2.比较时把常量放前面可以避免错误,不要用if(aIntValue==255){},而用if(255==aIntValue){},避免漏掉一个,而变成赋值。

3.所有返回BOOL类型的值必须为 YESNO不能返回 10或其他。

4.函数体即使只有一行代码也要加大括号。

5.常用的宏要放到 *-Prefix.pch文件中。

6.备忘、标记、TODO使用这样的格式: // TODO:内容

四、代码工程结构

工程结构的规范原则是模块化,快速定位文档和资源。特制定以下规则。

第一级,分为以下两个大组

系统文件 (Applications)

资源文件(Resources

代码文件(Classes

1.系统文件中 Applications

一些几个系统文件.

main.m

xxx-Info.plist

xxx-Prefix.pch

xxxAppDelegate.h

xxxAppDelegate.m

2.资源文件中 Resources

—ImagesIcons, Defaults, Others(此文件夹中放置所需要图片,并分组))

—Localizations(语言包)

—Databases(可选)

—Audios

3.代码文件中 Classes

(各模块文件夹,放置某模块专属的viewmodelcontroller等)

— ThirdParty(放置第三方库,必要时需要再进行分类放置)

— PublicUI(放置自身的公共UI, QTXLoadingView)

— PublicLib(放置自身的公共功能库, QTXURLManager)

0 0