繁体   English   中英

Cocoa中的实例变量命名约定

[英]Instance variable naming conventions in Cocoa

这个问题是关于目标c和cocoa中的变量命名风格。 我只想强调,我不是在寻找一个“正确”的答案,只是好主意。

我已经阅读了Apple和Google的客观c风格指南,我对它们中的任何一个都不满意。 Apple的指南没有关于实例变量和局部变量的任何真实样式建议。 事实上,Cocoa库本身似乎非常高兴拥有与实例变量完全相同的函数参数。 这让我个人感到畏缩。

谷歌指南指定实例变量应使用尾随下划线表示。 好吧,一切都很好,但它表明我们然后用@synthesize property = property_合成每个公共属性。 我不知道其他任何人,但如果我要为我的项目中的每个实例变量做这件事我都会被诅咒。 我认为这是一个浪费和混乱的解决方案。

我很想用对象属性的myX(例如“myInstanceVariable”)命名样式,但我很少在目标c中看到这种风格。

所以是的,你用的是什么? 任何风格约定,我不知道你发现有用吗? 您是否认为与实例变量同名的函数参数是危险的,尤其是在多个开发人员环境中? 谢谢你们和gals!

注 - 正如许多人所指出的那样,我的术语在OP中没有。 如果原始措辞损害了清晰度,请道歉,但我认为这一点仍然很明确。

我倾向于使用非前缀的实例变量名称(注意“成员变量”是C ++主义,因为它暗示结构和类主要是可互换的,而在Objective-C中却不是这样,并且在模糊性的情况下)出现,我使用Smalltalk约定命名参数的类型用“a”或“an”,例如:

- (void)setFoo:(SOFoo *)aFoo;
{
    foo = aFoo;
}

(当然,在现代的ObjC中你会使用一个属性。)

使用theFoo而不是aFoo也有点常见; 看到这个问题的答案。

如果你真的担心冲突,谷歌会议是有道理的。 如果您使用Xcode文本宏完成字典Accessorizer之类的工具来生成指令,则采用它非常简单。

请注意, Cocoa键值编码指南几乎假定(a)您没有为实例变量名添加前缀/后缀,或者(b)为它们实现(或合成)非前缀/后缀访问器。 正如其他人提到的,不要使用_前缀; 它保留给Apple在其框架中的使用。

第一:Objective-C中没有“成员变量”,有“实例变量”或“ivars”。

Google对Objective-C编码或Mac开发没有任何权威。 谷歌地球是一个Qt应用程序:'努夫说。

我似乎记得看过Apple的Objective-C官方编码风格指南,目前我还没有找到。 不过,本文是一个非常好的总结:

http://cocoadevcentral.com/articles/000082.php

找到了! 这是Apple针对Cocoa的官方编码指南:

http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html

在Cocoa中,风格是有pascalCased(或者是camelCased?我永远不记得)的名字; 并且成员变量的名称与访问者方法相同。 (例如NSInteger anInteger- anInteger- setAnInteger:

它可能不是最好的风格,但是如果你要使用Cocoa进行任何工作,那么习惯它可能是一个好主意,因为许多机制都假定这种特殊的命名约定。

m_variableName对于成员变量也很常见。 就个人而言,大多数情况下,我只是为两个变量使用相同的名称,并区分this.varnamevarname

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM