【问题标题】:When should I use "and" in Objective-C method names?什么时候应该在 Objective-C 方法名中使用“and”?
【发布时间】:2011-07-28 18:37:24
【问题描述】:

命名方法的 Apple 风格指南都说“不要使用“和”来链接作为接收者属性的关键字。”和“如果该方法描述了两个单独的操作,请使用“和”来链接它们。”在许多情况下,这些条件都不适用。例如,假设我有一个函数可以做一些工作,并在完成后调用目标上的选择器。是否应该命名

- (void)findObjectsInBackgroundWithTarget:(id)target andSelector:(SEL)selector;

或者应该这样命名

- (void)findObjectsInBackgroundWithTarget:(id)target selector:(SEL)selector;

在那个例子中,选择器和目标是相关的,但不是通过作为接收器的属性。类似的示例是检索具有特定属性的对象,但该对象不是方法的接收者。这个函数应该是

+ (Thing *)getThingWithName:(NSString *)name andId:(NSString *)thingId;

或者应该命名

+ (Thing *)getThingWithName:(NSString *)name id:(NSString *)thingId;

我知道这似乎是一件小事,但使用每个人都期望的风格很好。

【问题讨论】:

  • 这不是答案,所以我将其作为评论留下。我认为对于目标/选择器示例,很多库中的选择器参数称为“动作”。但这并不会使您的问题作为一般观点无效。
  • 我认为目标/动作词汇主要用于以 UI 为中心的代码(例如,大量用于 NS/UIResponder 和 NS/UIControl)。选择器似乎适合上述回调行为(例如,在 NSNotification 中)。
  • 既然你问的是方法名风格:get...在Cocoa中有特定的含义;它用于一般的“getter”方法,而仅用于采用指针指针并通过引用返回对象的方法。参见,例如,[NSArray getObjects:range:]

标签: objective-c coding-style methods naming-conventions naming


【解决方案1】:

根据 Apple 所说,只有在方法名称描述了该方法所做的操作时,才应使用“and”,即-(void)doThisAndThat,因此在您的两个示例中,您不应在方法中使用“and”名字。

【讨论】:

  • 从设计的角度来看,Apple 解释的方法名称中使用“and”可能被视为缺乏凝聚力。
猜你喜欢
  • 2013-06-16
  • 2012-02-26
  • 1970-01-01
  • 2012-06-10
  • 1970-01-01
  • 2011-02-03
  • 1970-01-01
  • 2010-12-30
相关资源
最近更新 更多