代码规范

一:基本代码命名

1.通用原则

尽量清晰又简洁,无法两全时清晰更重要,可读性优先级更高。

insertObject:atIndex: 好的

insert:at 坏的

removeObject: 好的

remove: 坏的

通常不应缩写名称,即使方法名很长也应完整拼写

destinationSelection   好
destSel 坏

避免一些歧义

displayName 显示一个名字还是展示一个标题

1.2 一致性

尽量和Cocoa编程接口命名一致

当某个类使用了多态的时候,一致性很重要,不同类里,功能相同的方法命名也应相同

-(NSInteger)tag

1.3 避免一些自引用

譬如本身就是某一个类的对象,但是在命名的时候又额外的扩展了

NSStringObject 错误

NSString 正确

但是有些是应该忽略此规则的如Notifaction和Mask

NSUnderlineByWordMask

NSTableViewColumnDidMoveNotifaction

2.前缀

前缀可以防止使用一些第三方库之类的文件发生冲突,一般来说前缀使用大写字母2个到3个不要使用下划线等

命名类、协议、函数、常量和typedef结构体时使用前缀,方法名和结构体不要使用前缀

3.书写规则

在命名API元素时, 使用驼峰命名法(如runTheWordsTogether),并注意以下书写约定:

方法名

小写第一个字母,大写之后所有单词的首字母,不使用前缀

如果方法名以一个众所周知的大写缩略词开始,该规则不适用

fileExistsAtPath:isDirectory:

函数及常量名

使用与其关联类相同的前缀,并大写首字母

NSRunAlertPanel

NSCellDisabled

标点符号

由多个单词组成的名称,别使用标点符号作为名称的一部分

分隔符(下划线、破折号等)也不能使用

避免使用下划线作为私有方法的前缀,Apple保留这一方式的使用

强行使用可能会导致命名冲突,即Apple已有的方法被覆盖,这会导致灾难性后果

实例变量使用下划线作为前缀还是允许的

4.class与protocol命名

类名命名的时候最好包含一个名词,这样可以表明此类是什么,有什么意思

如NSString、NSDate、NSScanner、UIApplication、UIButton

对与protocol类的命名可以加上ing的形式或者以protocol后缀区分

关联class的protocol

一些protoco聚集了一堆无关方法,并试图与某个class关联在一起,由这个class来主导

这种protocol与class同名

如NSObject protocol

5.头文件

可以声明一些宏定义或者常亮或者某一模块的枚举之类的在一个头文件中

二:方法命名

方法要用小写字母开头之后单词大写,如果方法代表接收的动作,以动词开头,不要使用do或者does作为名字一部分,助动词没有实际意义

-(void)invokeWithTarget:(id)target;

-(void)selectTabViewItem:(NSTabViewItem *)tabViewItem

方法返回接收者的属性的时候,要以接收者+接收者属性返回,如果没有返回多个值的话尽量不要加get

-(CGFloat)cellHeight;

确保参数之前的关键字充分描述了参数的意义

-(id)viewWithTag:(NSInteger)tag;

不要使用and链接参数名

如果property表示为名词,格式如下

-(type)noun;

-(void)setNoun:(type)aNoun;

-(BOOL)isAdjective;

delegate 方法

如果有多个参数回调的时候可以在首个参数后面加上对象名字

-(BOOL)tableView:(NSTableView *)tableView shouldSelectRow:(int)row;

使用did或者will通知delegate

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

-(NSUndoManager *)windowWillReturnUndoManager:(NSWindow *)window;

询问delegate是否可以执行某个行为时可以使用 did 或 will,不过 should 更完美

-(BOOL)windowShouldClose:(id)sender;

三:属性以及其他命名

1.属性命名

属性命名尽可能的指定是否可读

@property (nonatomic, assign, readonly) BOOL isLogined;

如果属性表示一个名词或者动词的时候

@property (strong) NSString *title;

@property (assign) BOOL showsAlpha;

如果是一个形容词

@property (assign, getter=isEditable) BOOL editable;

枚举常量可以使用苹果 官方风格

typedef enum _NSMatrixMode {
NSRadioModeMatrix = 0,
NSHighlightModeMatrix = 1,
NSListModeMatrix = 2,
NSTrackModeMatrix = 3
} NSMatrixMode;

通知常量命名

通知可以用extern在某个类里边声明,之后再实现的类里边如下引用就行

extern NSString *QCUserDidLogoutNotification;

不可变的常量命名

可以在前边加上static const修饰

static const NSTimeInterval kAnimationDuration = 0.3;

四:缩写

设计编程接口时通常不应使用缩写,被广泛使用的缩写名称除外

五:条件判断

普通if else 判断可以省略 ==YES之类的

if (someObject) { ... }
if (!someObject) { ... } if (someObject == YES) { ...}
if (someObject != nil) { ...}

复杂的逻辑判断可以腾出一个方法专门处理

嵌套判断可以使用如下

if (!user.UserName) return NO;
if (!user.Password) return NO;
if (!user.Email) return NO; return YES;

OC代码规范小记的更多相关文章

  1. OC 代码规范

    我们写出来的代码会给很多人看,为了使代码清晰简洁,方便阅读理解,都会统一遵从一定的代码规范,Objective-C同样如此.   主要参考规范:   1. Google Objective-C Sty ...

  2. iOS代码规范(OC和Swift)

    下面说下iOS的代码规范问题,如果大家觉得还不错,可以直接用到项目中,有不同意见 可以在下面讨论下. 相信很多人工作中最烦的就是代码不规范,命名不规范,曾经见过一个VC里有3个按钮被命名为button ...

  3. iOS-OC命名规范

    IOS开发(OC)中的命名规范 正文:通过读写大量代码我有自己的一套编程思路和习惯,自认为自己的编码习惯还是不错的,代码结构也算清晰,因为我一直以来都是代码看的多写的多,但是总结的比较少,知识经常不成 ...

  4. 学习JavaScript一些资料时,记录一些规范小记

    最近工作不是很忙,所以再深入学学JavaScript,顺便提升一下自己,嘿嘿!主要记录一下学习到的一下编写代码的规范小记吧! 1.声明变量时一定带上var,避免一些错误发生,如变量提升时遇见的问题发生 ...

  5. (转)ios 代码规范

    转自http://blog.csdn.net/pjk1129/article/details/45146955 引子 在看下面之前,大家自我检测一下自己写的代码是否规范,代码风格是否过于迥异阅读困难? ...

  6. iOS团队代码规范

    iOS团队代码规范 工程之始可能需要的工具: 1.使用CocoaPods类库管理工具.CocoaPods安装和使用教程. 2.下载安装注释插件VVDocumenter-Xcode. 一.项目结构管理 ...

  7. 谈谈PHP代码规范

    [转] http://www.syyong.com/php/Talk-about-PHP-code-specification.html 我向往这样一个php世界,里面没有代码规范之争.你我都一样,都 ...

  8. 2016 正确 sublime安装PHPcs PHPcodesniffer代码规范提示插件,修正网上部分不详细描述

    对你有助请点赞,请顶,不好请踩------送人玫瑰,手留余香!-------------------14:37 2016/3/212016 正确 sublime安装PHPcs PHPcodesniff ...

  9. C#与Java对比学习:类型判断、类与接口继承、代码规范与编码习惯、常量定义

    类型判断符号: C#:object a;  if(a is int) { }  用 is 符号判断 Java:object a; if(a instanceof Integer) { } 用 inst ...

随机推荐

  1. CVE-2018-12613-phpmyadmin4.8.1远程文件包含漏洞复现

    CVE-2018-12613-phpmyadmin4.8.1远程文件包含漏洞复现 参考文章1 参考文章2 By:Mirror王宇阳 漏洞原理 攻击者利用发现在服务器上包含(查看和潜在执行)文件的漏洞. ...

  2. centos7 nginx 配置

    1.下载nginx 官方下载1.6.2 2.编译安装 [root@bogon nginx-1.6.2]# ./configure --prefix=/usr/local/webserver/nginx ...

  3. NLP之语言模型

    参考: https://mp.weixin.qq.com/s/NvwB9H71JUivFyL_Or_ENA http://yangminz.coding.me/blog/post/MinkolovRN ...

  4. Java 8——重复注解和注解的作用范围的扩大化

    一.重复注解 在某些情况下,希望将相同的注解应用于声明或类型用途.从Java SE 8发行版开始,重复注解使可以执行此操作. 例如,正在编写代码以使用计时器服务,该服务使能够在给定时间或某个计划上运行 ...

  5. 在IIS上部署 .Net Core 3.0 项目踩坑实录

    在IIS上部署 .Net Core 3.0 项目的主要流程有: 安装并启用IIS 安装AspNetCoreModuleV2 添加.配置网站 设置应用程序池 通过VS发布 一.安装并启用IIS: 安装了 ...

  6. VScode - 10个提高工作效率的快捷键

    复制行 shift + alt + up / down 移动行 alt + up / down 多选 按住alt + 鼠标单击 删除上个单词 ctrl + Backspace 全部保存 ctrl + ...

  7. QGIS练手 - 标注

    又熬夜了... QGIS的标注就是标签,在QGIS3.x中有了改进. 不得不说,就光速度这一项,就能把ArcMap按在地上摩擦,更别说各种高级的标注样式了——除了标注功能面板UI有点“缺审美化”就是了 ...

  8. Tomcat乱码或异常

    一.控制台乱码 原因:Tomcat与Windows编码不一致导致 解决办法:首先找到conf/logging.properties文件,然后打开后找到“java.util.logging.Consol ...

  9. 好程序员web前端分享前端学习路线自学如何找到工作

    好程序员web前端分享前端学习路线自学如何找到工作,自学能不能学会WEB前端并且找到WEB前端开发岗位的工作取决于自身条件,如果基础好,自律性强那么将会容易很多,还有就是自学最难克服的并不是知识点,而 ...

  10. Appium从入门到实战合集

    从今天起,持续更新 想要及时获得更新,请关注微信公众号 教程下载 1.连载01-Appium自我介绍和环境搭建 2.连载02-Appium启动参数配置 3.连载03-Appium入门案例 4.连载04 ...