• 允许使用较长的描述尽量不要使用缩写,而是将完整的意思写出来。源于代码的维护可能会被不同文化背景的programmer阅读
  • 适当的命名前缀,比如给变量,协议等,不要给方法加前缀
  • 方法命名规则一般以小写字母开头然后中间如果有其他单词第一个首字母大写,比如:fileExistsAtPath:isDirectory: 也有例外的情况,比如使用有名的缩写做前缀TIFFRepresentation (NSImage).
  • 函数和常量的名字以所属类的缩写为前缀然后中间单词首字母大写,比如NSRunAlertPanel  NSCellDisabled
  • 不要给方面前面加下划线做前缀,这样的话此方法就是私有的,但是可以给实例变量加下划线前缀
  • 命名类名时可以加前缀,即之上的prefix并指明这个类的功能
  • 命名协议名一般都是...ing例如:NSLocking Good.  NSLock Poor (seems like a name for a class).

Header Files 命名

  • 声明独立的类或者协议,那么类名就以这个独立的类或者协议名称命名 NSLocale.h  The NSLocale class.
  • 声明相关的类或者协议,如果类,代理或者协议都是相关的一组,就将主要的一个作为命名名字
    NSLock.h NSLocking protocol and NSLock, NSConditionLock, and NSRecursiveLock classes.
    NSString.h NSString and NSMutableString classes.
  • 包含framework的头文件,每一个框架应该有一个头文件。名字是该框架隶属的类名 Foundation.h Foundation.framework.
  • 在一个类中添加的API是属于其他framework的,一个类的category里面命名的方法又包含在其他的framework中时,就在原来类名上加Additions is the NSBundleAdditions.h header file of the Application Kit.
  • 相关的函数和数据类型,如果是相关的函数,常量,数据结构或其他数据类型那么就命名一个合适的名字

Method General Rules 通常规则

  • 以小写字母开头,中间单词首字母大写不要使用前缀,除非是很常用的前缀或者想声明方法为私有的
  • 以动词开头如果方法名称要表示某种行为- (void)invokeWithTarget:(id)target;
  • 在动词前不要加形容词或者副词,不要使用do或者does作为名称的一部分
  • 如果方法直接返回receiver的一个属性,那么就直接后面写这个属性而不需要加get,除非这个方法是间接的返回一个或者多个属性。比如- (NSSize)cellSize;可能直接返回size,那么就不要加get
  • 每一个参数前都要加关键字,即将整个方法连接成完整的一个句子

   - (void)sendAction:(SEL)aSelector to:(id)anObject Right.

  • 每一个关键字要能描述参数

    - (id)viewWithTag:(NSInteger)aTag; Right. - (id)taggedView:(int)aTag; Wrong.

  • 方法中如果描述的是两个或者更多个不同的行为要使用and连接 - (BOOL)openFile:(NSString *)fullPath withApplication:(NSString *)appName andDeactivate:(BOOL)flag;
  • 如果是receiver的多个属性那么不要使用and来连接

     (int)runModalForDirectory:(NSString *)path file:(NSString *)name types:(NSArray *)fileTypes;
   - (int)runModalForDirectory:(NSString *)path andFile:(NSString *)name andTypes:(NSArray *)fileTypes;

Accessor Methods

  • 如果方法是用来返回或者设置对象属性的话,比如get和set方法,那么命名规则是:
  • 如果变量名是名词,那么:- (NSString *)title; 类型+名称 - (void)setTitle:(NSString *)aTitle; void +set+名称首字母大写+类型+a+名称
  • 如果变量名是形容词, 那么:- (NSString *)title; 类型+名称 - (void)setTitle:(NSString *)aTitle; void +set+名称首字母大写+类型+名称
  • 不要将动词和形容词,副词一起混用,例如:

  - (void)setAcceptsGlyphInfo:(BOOL)flag;   Right.
  - (BOOL)acceptsGlyphInfo;                       Right.
  - (void)setGlyphInfoAccepted:(BOOL)flag;  Wrong.
  - (BOOL)glyphInfoAccepted;           Wrong.

  • 可以使用“can”, “should”, “will”, and so on但是不能使用do和does
  • 可以使用get如果方法是多个对象不直接返回,例如:- (void)getLineDash:(float *)pattern count:(int *)count phase:(float *)phase;

Private Methods

  • 不要在方法前仅仅使用下划线来标注这个是私有的方法,苹果保留这个功能,因为很有可能会覆盖系统框架中的私有方法如果名称恰好相同
  • 可以使用自己唯一的标示加下划线来命名私有方法,比如公司名称等 BF_addObject

ios编程规范的更多相关文章

  1. iOS编程规范(整理)

    一.文档结构管理 1.建立Libraries文件夹,所有第三方库放入其中. 2.建立Utilities文件夹,自已封装的类放入其中. 3.建立Constants.h头文件,所有的常量定义于其中.Con ...

  2. iOS扩展——Objective-C开发编程规范

    最近准备开始系统学习一个完整项目的开发流程和思路,在此之前,我们需要对iOS的开发变成规范进行更系统和详尽的学习,随意对编程规范进行了整理和学习.本文内容主要转载自:Objective-C-Codin ...

  3. Batsing的网页编程规范(HTML/CSS/JS/PHP)

    特别注意!!!我这里的前端编程规范不苟同于Bootstrap的前端规范. 因为我和它的目的不同,Bootstrap规范是极简主义,甚至有些没有考虑到兼容性的问题. 我的规范是自己从编程实践中总结出来的 ...

  4. 中兴软件编程规范C/C++

    Q/ZX 深圳市中兴通讯股份有限公司企业标准 (设计技术标准) Q/ZX 04.302.1–2003      软件编程规范C/C++                               20 ...

  5. [置顶] iOS开发规范

    iOS代码编程规范 详细讲解代码该如何写,怎样写,如何规范. 什么样的代码是最美的,本文档会给你讲解 iOS代码编程规范........................................ ...

  6. FangDD Java编程规范

    我们采用<Oracle/Sun原生的Java编程规范>和<Google Java编程规范> Google Java编程风格指南 January 20, 2014 作者:Haws ...

  7. (转)ios 代码规范

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

  8. 国内大型的内部 C# 编程规范

    C#编程规范 改动记录 Ver. No 发版日期 编制人 批准人 改动的说明 目   录 1 1.1 1.2 2 2.1 2.1.1      Pascal 大写和小写 2.1.2      Came ...

  9. JAVA编程规范(下)

    JAVA编程规范(下) 2016-03-27 6. 代码的格式化 6.1 对代码进行格式化时,要达到的目的 1.     通过代码分割成功能块和便于理解的代码段,使代码更容易阅读和理解: 2.     ...

随机推荐

  1. JS空数组的判断

    前言 最近在做一个mini项目,被大神各种鄙视,基础知识确实是不扎实,加油加油.好了,不多废话,抽空写写遇到的两个知识点,就记录下来,写博客还是能帮忙整理记录的,不然过了就忘记了. input监听值改 ...

  2. WebApi 跨域

    http://www.cnblogs.com/lori/p/3557111.html http://bbs.csdn.net/topics/391020576

  3. C语言其他知识总结

    1.常指针与指针常量 诀窍:观察const修饰的是谁,那谁就不可更改. const int *p;//const 修饰*p,所以*p不能更改.通过指针不可更改指向的值 int const *p;//同 ...

  4. Python_字符串操作

      name='hu\tqihang'                       #\t是TAB键  1.打印相关 print(name.center(50,'-')) #一共打印50个字符,不够的 ...

  5. spaCy 并行分词

    spaCy 并行分词 在使用spacy的时候,感觉比nltk慢了许多,一直在寻找并行化的方案,好在找到了,下面给出spaCy并行化的分词方法使用示例: import spacy nlp = spacy ...

  6. git基础之常用操作

    一.版本提交: (1)git add 文件名 (2)git commit -m "版本提交信息" 注:git分两个区:工作区+版本库 在电脑中看到的文件夹就是工作区 有一个隐藏的. ...

  7. sqlserver2008透明书库加密

    /*Title:TDE加密Author:浪客Environment:Windows Server 2008 Enterprise + SQL Server 2008 EnterpriseDescrip ...

  8. [oldboy-django][2深入django]cookies + session

    1.1 cookies - 初识cookie a.cookie是保留在浏览器端的键值对 b.服务端可以向客户端写cookie c.客户端每次发送请求,会携带cookie一起发送过去,而且cookie是 ...

  9. TOJ 4689: Sawtooth

    4689: Sawtooth Time Limit(Common/Java):1000MS/3000MS     Memory Limit:65536KByteTotal Submit: 26     ...

  10. 使用jsp读取TXT格式文件

    <%@page import="java.io.BufferedReader"%> <%@page import="java.io.FileReader ...