博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS-OC命名规范
阅读量:6930 次
发布时间:2019-06-27

本文共 2831 字,大约阅读时间需要 9 分钟。

 

  正文:通过读写大量代码我有自己的一套编程思路和习惯,自认为自己的编码习惯还是不错的,代码结构也算清晰,因为我一直以来都是代码看的多写的多,但是总结的比较少,知识经常不成体系。以后多花点时间把自己的经验和学习知识加以总结一下吧,这样有利于去指导新人,也更有利于加深自己的知识认知。今天就从代码规范入手总结一下iOS开发中好的编码规范吧。我们在开发中看别人的代码的时候经常会去抱怨至少内心里骂娘,其实别人看你的代码也许也在抱怨你,我更深刻的意识到:高手和新手有代码规范水平的差异,高手与高手之间有变成思想的差异,新手之间就在模仿中就更加凌乱了。因此团队开发一定要有很好的且统一的编码规范,这样才有利于团队开发与快速维护。今天先写第一篇:《iOS开发(OC)中的命名规范》

命名原则

1.一般性原则:可读性高(简洁且清晰)和防止命名冲突(通过加前缀来保证)。

  Objective-C 的命名通常都比较长, 名称遵循驼峰式命名法. 一个好的命名标准很简单, 就是做到在开发者一看到名字时, 就能够懂得它的含义和使用方法. 另外, 每个模块都要加上自己的前缀, 前缀在编程接口中非常重要, 可以区分软件的功能范畴并防止不同文件或者类之间命名发生冲突, 比如相册模块(PhotoGallery)的代码都以PG作为前缀: PGAlbumViewController, PGDataManager.

代码

点评

insertObject:atIndex:

Good

insert:at:

不清晰;要插⼊什么?“at”表⽰示什么?

removeObjectAtIndex:

Good

removeObject:

不错,因为⽅法是⽤用来移除作为参数的对象

remove:

不清晰;要移除什么?

2.一致性

尽可能与Cocoa编程接⼝命名保持一致。如果你不太确定某个命名的⼀致性,请浏览头文件或参考文档中的范例,在使⽤多态方法的类中,命名的⼀致性⾮常重要。在不同类中实现相同功能的⽅法应该具有同的名称。

代码 点评
– (NSInteger)tag 在 NSView, NSCell, NSControl 中有定义
– (void)setStringValue:(NSString *) 在许多 Cocoa classes 中都有定义

 

文件的命名

文件的扩展名应该如下:

.h C/C++/Objective-C 的头文件
.m Ojbective-C 实现文件
.mm Ojbective-C++ 的实现文件
.cc 纯 C++ 的实现文件
.c 纯 C 的实现文件

类别的文件名应该包含被扩展的类名,如:GTMNSString+Utils.h 或``GTMNSTextView+Autocomplete.h``。

类的命名

类名(以及类别、协议名)应首字母大写,并以驼峰格式分割单词。

1.类的前缀

1)所有类名、枚举、结构、protocol定义时最好加一个统一的标示符,可以是项目缩写,或者个人项目的名称缩写,例如都加上全大写的Hoo(我的姓氏)作为前缀

2)根据功能模块可以在给功能模块的类添加功能模块的名称前缀,如用户中心的profileViewController.可以命名为HooUCProfileViewController.

2.类的后缀

所有protocol定义时,都加上后缀Delegate 。如,HooRefreshViewDelegate,表示RefreshView的协议;

所有的控制器都加上Controller,所有的通知名都加上Notification。

 类别命名

类名+标识+扩展(UIImageView +HP+Web

例:如果我们想要创建一个基于UIImageView 的类别用于网络请求图片,我们应该把类别放到名字是UIImageView+HPWeb.h的文件里。UIImageView为要扩展的类名,HP为专属标识,Web为扩展的功能。

方法命名

方法名应遵守小驼峰原则,首字母小写,其他单词首字母大写,每个空格分割的名称以动词开头。执行性的方法应该以动词开头,小写字母开头,返回性的方法应该以返回的内容开头,但之前不要加get。

如:

1
2
3
- (
void
)insertModel:(id)model atIndex:(NSUInteger)atIndex;
 
- (instancetype)arrayWithArray:(NSArray *)array;

  

枚举的命名

正宗的iOS开发者当然要以Objective-C的方式命名枚举,如:

1
2
3
4
5
6
7
typedef NS_ENUM(NSInteger, UIViewAnimationTransition) {
    
UIViewAnimationTransitionNone,
    
UIViewAnimationTransitionFlipFromLeft,
    
UIViewAnimationTransitionFlipFromRight,
    
UIViewAnimationTransitionCurlUp,
    
UIViewAnimationTransitionCurlDown,
};

  

属性、变量命名

变量名使用小驼峰法, 使变量名尽量可以推测其用途属性具有描述性。别一心想着少打几个字母,让你的代码可以迅速被理解更加重要。每个属性命名都加上类型后缀,如,按钮就加上Button后缀,模型就加上Model后缀。

@property (nonatomic, strong) UIButton *submitButton;

1)类成员变量名

  成员变量用小驼峰法命名并前缀下划线,如:UIButton *_submitButton;

2)局部变量名

  遵守小驼峰命名规则,如:NSInteger numCompletedConnections =3;

const常量

以小写k开头,后面单词首字母大写,其余小写。如:

const float kMaxHeigt = 100.0f;

如果是特殊含义的常量也建议加上后缀,如通知加上Notification为后缀,如:

extern Nsstring * Const kLoginSuccessNotification

资源文件命名 (图片,本地化文件)

这个图片资源命名方式,以功能为组织形式,是一个很好的习惯,有利于查看资源文件。

原则:

1)采用单词全拼,或者大家公认无岐义的缩写(比如:nav,bg,btn等)

2)采用“模块+功能”命名法,模块分为公共模块、私有模块。公共模块主要包括统一的背景,导航条,标签,公共的按钮背景,公共的默认图等等;私有模块主要根据app的业务功能模块划分,比如用户中心,消息中心等。

例如用户中心用户头像图片的命名可以为:uc_imageview_user_icon

 

转载地址:http://gakjl.baihongyu.com/

你可能感兴趣的文章
easyUi datagrid 返回时间格式化操作
查看>>
redis.conf配置详细翻译解析
查看>>
Linux Nano命令
查看>>
线程高级应用-心得4-java5线程并发库介绍,及新技术案例分析
查看>>
linux 弹出光驱失败
查看>>
grep用法详解:grep与正则表达式【转】
查看>>
Python中执行系统命令常见的几种方法--转载
查看>>
spring整合springmvc
查看>>
【译】Kafka学习之路
查看>>
(转) 深度强化学习综述:从AlphaGo背后的力量到学习资源分享(附论文)
查看>>
有关HTTP的粗读
查看>>
在线支付系统功能
查看>>
如果有个库函数接受的是无参数的回调函数怎么办?
查看>>
Asp.Net Core Authentication Middleware And Generate Token
查看>>
[C++]简单的udp通信
查看>>
Recovery模式【转】
查看>>
SQL数据分析概览——Hive、Impala、Spark SQL、Drill、HAWQ 以及Presto+druid
查看>>
mongodb备份与恢复
查看>>
iOS 11确认将完全停止支持 32 位应用
查看>>
hdu 4857 逃生 (拓扑排序+保证最小在前面)
查看>>