Objective-C 命名规范浅谈
对于易维护的代码而言,命名规则非常重要。
<br /> — by Google style guide
如开篇那句话,遵循命名规范不仅使得代码可读性提高,更能体现一个合格程序员的素质
为什么这么说
程序员写代码不是只为自己写(这点非常重要).很多人在开始写代码的时候只专注于功能,认为完成功能就是完成了大部分的任务,其实还差的很远,且不说代码质量,就蹩脚的命名方式,奇怪的函数名称就够维护人员,或调用者tou… 这也是大家为什么要统一命名,形成规范的最初原因。
好的命名,或者遵循了规范的命名除了可以帮助其他programmer更方便的阅读和维护你的代码,更能帮助开发者本身认识到你在开发一项什么功能,是属性相关还是动作相关,这些在命名OC规范里都有提及.其实,当开发者清楚地知道自己在开发一项什么功能的时候,利用自然语言中的动词,连词就可以写出符合规范的名称,这也是OC的一大优势。有的人嫌弃OC语法冗赘,这的确是事实,有时候初始化一个变量就要3行代码,但代码块读起来就像散文一样,不需要太多的代码注释。
作为一个有追求的程序员,应该时时刻刻注意和官方文档要求靠拢,apple中api的命名,class中delegate的命名都是有规范的,勤看,勤记,那样一段时间下来你写的代码就会向官方文档一样漂亮。其他开发者调用时也会很舒服.
对待程序,如果你真正热爱,请培养你的代码洁癖
====================分割线=====================
自己在程序里遇到的命名规范
命名的基本准则相信大部分人都知道:清晰,一致,无自我参照。命名版式也一般遵循驼峰命名或者Pascal,这里我们都采用驼峰命名法.在我们的项目中,我遇到最多的就是函数,类的命名问题。
类的命名不需要的体现技术细节,没有人去关注你这个类到底是怎么实现的,调用者只关注暴露出的接口即可。例如现在写一个功能,是做照片浏览的,采用嵌套scrollview实现,里面的那层scrollview命名该怎么命名呢?我一开始写的是WQSingleScrollview,组长说命名很奇怪,我不关注你怎么实现的,逻辑上它是一个什么东西,就怎么命名.说白了他就是个pageView,后来就改成WQPhotoPageView。
函数命名。第一,你必须清楚地知道这个函数是做什么的,是实现动作或者事件的就用动词开头,例如是拉取数据就用build或update开头。初始化的就已init开头。如果参数多,还可以用and,with这些连词或是副词连接各个item。
说明:由于Cocoa函数还分为存取函数(Accessor Methods)、委托函数(Delegate Methods)和集合函数(Collection Methods),每种函数都有其详细的规范,请详细参阅《Apple Coding Guidelines for Cocoa》。
//关键字为属性,不应该使用and
- (int)runModalForDirectory:(NSString *)path andFile:(NSString *)name andTypes:(NSArray *)fileTypes;
//关键字为表示action,使用and
- (BOOL)openFile:(NSString *)fullPath withApplication:(NSString *)appName andDeactivate:(BOOL)flag;
除了命名的规范,代码的版式也非常重要。OC的语法给人冗长的感觉,所以排版很重要。例如:
如果一行有非常多的参数,更好的方式是将每个参数单独拆成一行。如果使用多行,将每个参数前的冒号对齐。- (void)doSomethingWith:(GTMFoo *)theFoo rect:(NSRect)theRect interval:(float)theInterval { ... }
当第一个关键字比其它的短时,保证下一行至少有 4 个空格的缩进。这样可以使关键字垂直对齐,而不是使用冒号对齐:
– (void)short:(GTMFoo *)theFoo
longKeyword:(NSRect)theRect
evenLongerKeyword:(float)theInterval
{
…
}
以上都是错的
虽然有代码规范,但写代码的毕竟是一个个活生生的个体,不可能被这些条框限制死,最终要还是养成自己的一套代码规范,遵循了基本的守则,让代码整洁,易懂即可。