Objective c setter和getter的方法名称约定
我希望我的所有实例变量在公共方法中都是私有的和访问器/变异器。我想知道在构建大型类时是否有一种命名约定,一种是为了其他开发人员的可读性,另一种是防止方法名与其他类冲突的约定 例如,如果我想让一个类访问并更改名为“支持音乐家”的“质量”(不一定是特定变量),Objective c setter和getter的方法名称约定,objective-c,cocoa,naming-conventions,Objective C,Cocoa,Naming Conventions,我希望我的所有实例变量在公共方法中都是私有的和访问器/变异器。我想知道在构建大型类时是否有一种命名约定,一种是为了其他开发人员的可读性,另一种是防止方法名与其他类冲突的约定 例如,如果我想让一个类访问并更改名为“支持音乐家”的“质量”(不一定是特定变量),[myInstance setSupportsMusicians:YES]和[myInstance returnSupportsMusicians]是否可以接受,使用set和return作为所有其他变体和访问器的方法名称前缀 显然,我知道我可以
[myInstance setSupportsMusicians:YES]
和[myInstance returnSupportsMusicians]
是否可以接受,使用set
和return
作为所有其他变体和访问器的方法名称前缀
显然,我知道我可以给它们取任何我想要的名字,但我想得到一些意见,因为我知道命名约定是有组织开发的重要组成部分。set和get是Java&很少有其他语言风格 但cocoa风格是(名称为伪代码): cocoa中的setName()是setName: cocoa中的getName()是名称: 编辑:这仅用于命名约定,不要将其作为方法的语法 一些有用的链接:
您最好使用
@property
来声明这样的内容。通过这种方式,您可以获得其所有实现好处(如原子性、自动生成ivar等)以及方便的点语法(例如,myInstance.supportsMusicians=YES
),而无需担心底层方法名称
但是,如果您确实想手动声明方法,或者只是想知道自动生成的方法是什么,那么命名约定是:
- (void)setSupportsMusicians:(BOOL)supportsMusicians;
- (BOOL)supportsMusicians;
对于某些类型的布尔属性也有一个附带的例子,其中“is”用作可读性的前缀,例如
- (BOOL)isVisible;
然而,这并没有得到普遍遵守,可能被视为一项遗留公约
请注意,“get”作为前缀不应随意使用,因为它有一个特定的含义:它用于调用方提供要填充的缓冲区的上下文中,例如
-[NSString getBytes:length://code>我不确定这是正确的“cocoa风格”,因为括号表明您谈论的是函数,而不是方法。我指的是Objective-C中的对象方法,而不是C风格的函数约定。您可能只想使用@propty和@synthesis(仅在必要时重写),而不是自己编写所有setter/getter。然后,您将能够使用myInstance.supportsMusicians
符号来读/写变量(它仍然在幕后使用getter/setter)。对于getter/setter@property就足够了,新的xcode会创建一个隐藏的变量。对于使用相同样式的所有其他私有或公共方法,不能使用“get”或“return”。@Kitsune对于完全封装,您可以在头文件(在实现中)之外使用private
form@property
,以仍然获得使用属性进行内存管理的好处,但是仍然只对setter/getter使用公共方法。好的链接。根据文件,看起来“get”实际上并没有被建议。