iOS - 开发代码部分规范

1. 关于命名

1.1 统一要求

  • 含义清楚,尽量做到不需要注释也能了解其作用,若做不到,就加注释
  • 使用全称,不适用缩写

1.2 类的命名

  • 大驼峰式命名:每个单词的首字母都采用大写字母

1

  例子:MFHomePageViewController

  • 后缀要求

a.ViewController: 使用ViewController做后缀


1

  例子: MFHomeViewController

b.View: 使用View做后缀


1

  例子: MFAlertView

c.UITableCell:使用Cell做后缀


1

  例子: MFNewsCell

d.Protocol: 使用Delegate或者DataSource作为后缀


1

  例子: UITableViewDelegate

1.3 私有变量

  • 小驼峰式命名:第一个单词以小写字母开始,后面的单词的首字母全部大写

1

  例子:firstName、lastName

  • 以 _ 开头,第一个单词首字母小写

1

  例子:NSString * _somePrivateVariable

  • 私有变量放在 .m 文件中声明

1.4 property变量

  • 小驼峰式命名

1

2

  例子:///注释

  @property (nonatomic, copy) NSString *userName;

  • 禁止使用synthesize关键词

1.5 宏命名

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

1

  例子: #define THIS_IS_AN_MACRO @"THIS_IS_AN_MACRO"

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

1

  例子:#define kWidth self.frame.size.width

  • 小驼峰命名。[带参数]

1

  #define getImageUrl(url) [NSURL URLWithString:[NSString stringWithFormat:@"%@%@",kBaseUrl,url]]

1.6 Enum

  • Enum类型的命名与类的命名规则一致
  • Enum中枚举内容的命名需要以该Enum类型名称开头

1

2

3

4

5

6

7

  例子:

  typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) {

      AFNetworkReachabilityStatusUnknown = -1,

      AFNetworkReachabilityStatusNotReachable = 0,

      AFNetworkReachabilityStatusReachableViaWWAN = 1,

      AFNetworkReachabilityStatusReachableViaWiFi = 2

  };

1.7 Delegate命名

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

1

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

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

1

2

  例子:

  -(NSInteger)numberOfSectionsInTableView:(UITableView*)tableView

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

1

  例子:-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

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

1

2

3

4

  例子:

  a.-(NSIndexPath*)tableView:(UITableView*)tableView willSelectRowAtIndexPath:(NSIndexPath*)indexPath;

  

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

2. 私有方法及变量声明

2.1 声明位置

  • 在.m文件中最上方,定义空的category进行声明

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

  例子:

  #import "CodeStandardViewController.h"

  // 在这个category(类目)中定义变量和方法

  @interface CodeStandardViewController (){

      // 声明私有变量

  }

  

  // 私有方法

  - (void)samplePrivateMethod;

  @end

  

  @implementation CodeStandardViewController

  

  // 私有方法的实现

  - (void)samplePrivateMethod

  {

      //some code

  }

3.关于注释

最好的代码是不需要注释的 尽量通过合理的命名

良好的代码把含义表达清楚 在必要的地方添加注释

注释需要与代码同步更新

如果做不到命名尽量的见名知意的话,就可以适当的添加一些注释或者mark

3.1 属性注释


1

2

3

例子:

/// 学生

@property (nonatomic, strong) Student *student;

3.2 方法声明注释


1

2

3

4

5

6

7

8

9

10

/** 

* @brief 登录验证

*

* @param personId 用户名

* @param password 密码

* @param complete 执行完毕的block

*

* @return

*/

+ (void)loginWithPersonId:(NSString *)personId password:(NSString *)password complete:(void (^)(CheckLogon *result))complete;

4.关于UI布局

使用Interface Builder进行界面布局

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

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

5.格式化代码

5.1 指针 "*" 位置

  • 定义一个对象时,指针 "*" 靠近变量

1

  例子: NSString *userName;

5.2 方法的声明和定义

  • 在- 、+和返回值之间留一个空格,方法名和第一个参数之间不留空格

1

  - (id)initWithNibName:(NSString *)nibNameOrNilbundle:(NSBundle *)nibBundleOrNil{...}

5.3 代码缩进

  • 使用 xcode 默认缩进,即 tab = 4空格
  • 使用 xcode 中 re-indent 功能定期对代码格式进行整理
  • 相同类型变量声明需要独行声明

1

2

3

4

  例子:

  CGFloatoringX = frame.origin.x;

  CGFloatoringY = frame.origin.y;

  CGFloatlineWidth = frame.size.width;

  • Method与Method之间空一行

1

2

3

4

5

6

7

  例子:

  #pragma mark - private methods

  - (void)samplePrivateMethod

  {...}

  

  - (void)sampleForIf

  {...}

5.4 对method进行分组

  • 使用 #pragma mark - 方式对类的方法进行分组

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

  例子:

  #pragma mark - private methods

  - (void)samplePrivateMethod

  {...}

  

  - (void)sampleForIf

  {...}

  

  - (void)sampleForWhile

  {...}

  

  - (void)sampleForSwitch

  {...}

  

  - (void)wrongExamples

  {...}

  

  #pragma mark - public methods

  - (void)samplePublicMethodWithParam:(NSString*)sampleParam

  {...}

  

  #pragma mark - life cycle methods

  - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

  {...}

  

  - (void)viewDidLoad

  {...}

  

  - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

  {...}

5.5 大括号写法

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

1

2

3

4

5

6

7

8

9

10

11

  例子:

  - (id)initWithNibName:(NSString *)nibNameOrNilbundle:(NSBundle *)nibBundleOrNil

  {

      self = [super initWithNibName:nibNameOrNil

      bundle:nibBundleOrNil];

      if (self) {

              // Custom initialization

      }

      

      return self;

  }

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

  例子:

  - (void)sampleForIf

  {

      BOOL someCondition = YES;

      if(someCondition) {

          // do something here

      }

  }

  

  - (void)sampleForWhile

  {

      int i = 0;

      while (i < 10) {

          // do something here

          i = i + 1;

      }

  }

  

  - (void)sampleForSwitch

  {

      SampleEnum testEnum = SampleEnumTwo;

      switch(testEnum) {

      caseSampleEnumUndefined:{

          // do something

          break;

      }

      caseSampleEnumOne:{

          // do something

          break;

      }

      caseSampleEnumTwo:{

          // do something

          break;

      }

      default:{

          NSLog(@"WARNING: there is an enum type not handled properly!");

          break;

      }

  }

  • 任何需要写大括号的部分,不得省略

1

2

3

4

5

6

7

8

9

  错误示例:

   - (void)wrongExamples

   {

      BOOLsomeCondition = YES;

      if (someCondition)

      NSLog(@"this is wrong!!!");

      while(someCondition)

      NSLog(@"this is wrong!!!");

   }

时间: 2024-10-11 22:00:32

iOS - 开发代码部分规范的相关文章

iOS 开发代码规范有哪些

对于刚刚入门ios的同学来说,iOS 开发代码规范是很重要的知识的,这里就给大家简单总结了一下. 一.工程规范 1.功能分类 根据所做功能的不同,分为不同的功能模块,比如登录模块,首页模块,个人模块等,根据不同的功能,代码必须要放在不同功能的文件夹下. 2.代码文件分类 不管是MVC模式,MVVM模式,或是其他设计模式,在不同的功能模块下,视图控制器(Controllers),视图(Views),模型类(Models),也必须要分别存放. 3.第三方库分类 工程中会经常使用第三方库,在引入第三方

ios开发代码规范

代码规范很重要,一个良好的代码习惯要从一开始就养成 公共类和文件的设计 (网络请求类.数据库类.Model类.View类,Controller<根据流程图>.Handle类<数据处理>.公共头文件<宏.接口的.h{URL}.常量const{通知中心的名字.一些状态码.枚举.结构体}.全局配置(适配{屏幕适配.iOS系统适配}的宏.系统版本判断.颜色值{参考图片})>) 一.文件 1.项目文件必须使用一个有意义的名字. 例如:TestDownImages 2.任何文件的命

IOS开发-代码规范

代码风格的重要性对于一个团队和项目来说不言而喻.网上有许多 Objective-C 的代码风格,但这份简洁而又最符合苹果的规范,同时有助于养成良好的代码习惯,也是我们团队一直遵循的代码风格. 写法没有对错,只是一种规范.各有各的一种规范,仅供参考. # 纽约时报 移动团队 Objective-C 规范指南 这份规范指南概括了纽约时报 iOS 团队的代码约定. ## 介绍 关于这个编程语言的所有规范,如果这里没有写到,那就在苹果的文档里: * [Objective-C 编程语言][Introduc

iOS开发代码规范(通用)

例子: MFHomeViewController View: 使用View做后缀 例子: MFAlertView UITableCell:使用Cell做后缀 例子: MFNewsCell Protocol: 使用Delegate或者DataSource作为后缀 例子: UITableViewDelegate UI控件依次类推 3> 私有变量 小驼峰式命名:第一个单词以小写字母开始,后面的单词的首字母全部大写 例子:firstName.lastName 以 _ 开头,第一个单词首字母小写 例子:N

前端开发代码书写规范

规范目的: 为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必须按本文档规范进行前台页面开发. 本文档如有不对或者不合适的地方请及时提出, 经讨论决定后方可更改. 基本准则: 符合web标准, 语义化html, 结构表现行为分离, 兼容性优良. 页面性能方面, 代码要求简洁明了有序, 尽可能的减小服务器负载, 保证最快的解析速度. 文件规范 1. html, css, js, images文件均归档至<系统开发

Android开发代码格式规范

书写规范 1. 编码方式统一用UTF-8. Android Studio默认已是UTF-8,只要不去改动它就可以了. 2. 缩进统一为4个空格,将Tab size设置为4则可以保证tab键按4个空格缩进.另外,不要勾选上Use tab character,可以保证切换到不同tab长度的环境时还能继续保持统一的4个空格的缩进样式. 3. 花括号不要单独一行,和它前面的代码同一行.而且,花括号与前面的代码之间用一个空格隔开. public void method() { // Good } publ

OC iOS开发 代码布局

代码布局抛弃storyboard,用代码生成界面,它的优劣不谈 首先在项目设置中,更改应用的“入口” 不选main,清空它 然后在AppDelegate.m中,更改(添加内容),别忘了import 1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 2 // Override point for customization

iOS开发- Xcode插件- 规范注释生成器VVDocumenter 自己的见解

xcode升级  VVDocumenter 插件失效怎么办?? 首先给个完整的安装参考:http://www.th7.cn/Program/IOS/201405/212030.shtml  参考这个可以完整安装,安装之后重启Xcode,打开一个新的工程 提示 Load bundle和Skip Bundle  一定要选择  Load bundle  如果不小心选错 下面是解决办法, 前往文件夹~/Library/Application Support/Developer/Shared/Xcode/

iOS开发-代码的基本使用

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #1e9421 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000; min-height: 21.0px } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c81b13 }