我想在公共方法中将所有实例变量设置为private和accessors / mutators。我想知道在构建大型类时是否存在我应该注意的命名约定,这是一种既可用于其他开发人员的可读性的约定,也是一种阻止方法名称与其他类冲突的约定。
例如,如果我想要一个类来访问和更改名为“支持音乐家”的“质量”(不一定是特定变量),那么[myInstance setSupportsMusicians:YES]
和[myInstance returnSupportsMusicians]
将是可接受的名称,使用{ {1}}和set
作为所有其他mutator和访问器的方法名称前缀?
显然我知道我可以将它们命名为我想要的任何东西,但我想得到一些意见,因为我知道命名约定是有组织的开发的重要组成部分。
答案 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:
编辑:这仅适用于命名约定,不要将其作为方法的语法。
很少有用的链接: