• 允许使用较长的描述尽量不要使用缩写,而是将完整的意思写出来。源于代码的维护可能会被不同文化背景的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. 【Plus One】cpp

    题目: Given a non-negative number represented as an array of digits, plus one to the number. The digit ...

  2. CSS视觉格式化模型

    CSS视觉格式化模型(visual formatting model)是用来处理文档并将它显示在视觉媒体上的机制.这是CSS 2.1的一个基础概念.视觉格式化模型根据CSS盒模型为文档的每个元素生成0 ...

  3. TextBox的值随dropdownlist值而变化

    转自:http://bytes.com/topic/asp-net/answers/443065-textbox-value-change-select-other-item-dropdownlist ...

  4. [oldboy-django][2深入django]班级管理(Form)--查看

    1 需求:django实现班级管理:查看(分页): 数据库采用django自带的sqlite3 2 数据库表创建 from django.db import models class Classes( ...

  5. idea调试查看mybitis发送的语句(引用)

    MyBatis 的配置文件 Configuration 中有相关属性,设属性即可,不用再放一个 log4j.properties 文件. <configuration> <setti ...

  6. 关于JavaWeb开发的一些感悟

    从事JavaWeb的开发已经三年了,从最开始的啥都不会,到慢慢的能够独立做项目,从一开始的一片茫然,到现在的心中有数.对于技术.业务也有了自己的看法. JavaWeb开发所涉及到的知识点非常多,涉及到 ...

  7. EPEL 安装源

    EPEL 安装源 EPEL 是 Extra Packages for Enterprise Linux 的缩写(EPEL),是用于 Fedora-based Red Hat Enterprise Li ...

  8. vNS12 MySQL Performance

    vNS12 MySQL Performance vNS12(192.168.195.91): 2vCPU + 2GBMemMySQL1(192.168.185.73): 2vCPU + 1GBMemM ...

  9. bzoj1086【SCOI2005】王室联邦

    题意:http://www.lydsy.com/JudgeOnline/problem.php?id=1086 sol  :这题水水啊,直接大力DFS就行了 首先当且仅当x<B时无解 对于以x为 ...

  10. python请求带cookie

    先获得cookie到文件 import cookielib import urllib2 #设置保存cookie的文件,同级目录下的cookie.txt filename = 'cookie.txt' ...