setter和getter的方法名称约定

时间:2012-11-22 06:09:06

标签: objective-c cocoa naming-conventions

我想在公共方法中将所有实例变量设置为private和accessors / mutators。我想知道在构建大型类时是否存在我应该注意的命名约定,这是一种既可用于其他开发人员的可读性的约定,也是一种阻止方法名称与其他类冲突的约定。

例如,如果我想要一个类来访问和更改名为“支持音乐家”的“质量”(不一定是特定变量),那么[myInstance setSupportsMusicians:YES][myInstance returnSupportsMusicians]将是可接受的名称,使用{ {1}}和set作为所有其他mutator和访问器的方法名称前缀?

显然我知道我可以将它们命名为我想要的任何东西,但我想得到一些意见,因为我知道命名约定是有组织的开发的重要组成部分。

2 个答案:

答案 0 :(得分:4)

你最好使用@property来声明这样的事情。通过这种方式,您可以获得其所有实现优势(如atominicity,自动ivar生成等)以及方便的点语法(例如myInstance.supportsMusicians = YES),所有这些都无需担心底层方法名称。

但是如果你想手动声明你的方法,或者只是想知道自动生成的方法是什么,命名约定是:

- (void)setSupportsMusicians:(BOOL)supportsMusicians;
- (BOOL)supportsMusicians;

对于某些类型的布尔属性,还有一个侧面案例,其中“is”用作可读性的前缀,例如。

- (BOOL)isVisible;

然而,这并不是普遍遵循的,并且可能被视为遗留惯例。

请注意,“get”作为前缀不应随机使用,因为它具有特定含义:它在调用者提供要填充的缓冲区的上下文中使用,例如: -[NSString getBytes:length:]

答案 1 :(得分:2)

设置和获取是Java&很少有其他语言风格。

但是可可风格是(Pseudocode,名字):

cocoa中的

setName()是setName:

cocoa中的

getName()是name:

编辑:这仅适用于命名约定,不要将其作为方法的语法。

很少有用的链接:

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

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