您认为什么被称为“辅助方法”?

时间:2009-05-13 20:44:51

标签: objective-c oop

我想知道什么样的方法是“辅助方法”。我们在哪里画te边框说一个特定的方法是“辅助方法”?实际上,如果它不是初始化方法,那么我认为任何方法都是“辅助方法”,这是一种符合协议或委托响应方法的方法。在我看来,我实现的任何其他方法都是“辅助方法”,但我觉得还有更多的类别需要考虑。

为什么我想知道这件事?因为我想在Xcode中使用#pragma mark HEADLINE的东西。我相信以某种方式组织代码是件好事。

请帮助我清楚地了解“辅助方法”。示例赞赏!

7 个答案:

答案 0 :(得分:3)

我把它视为库的正常运行不需要的方法,但让最终用户更容易或更易读。

嗯...没有举个例子。假设您有一个从数据库中获取用户的功能,它采用

的形式
User GetUsers(UserRole)
{
//Do Something
}

示例辅助方法可能是

User GetAdmins()
{
   return GetUsers("Admins");
}

它是粗略的伪代码类型示例,但给出了要点。 GetAdmins的功能在GetUsers()中完成,但GetAdmins帮助函数有助于提高可读性(仅此而已)。

有意义吗?

答案 1 :(得分:1)

我会说一个特定于特定类但不依赖于访问该类的私有实现细节的方法是该类的辅助方法。辅助方法也不应该是有状态的。

答案 2 :(得分:1)

我认为辅助方法只有一个调用者。 可以内联,但由于其代码在调用者外部,调用者更容易理解,复杂性更低。

答案 3 :(得分:1)

我认为你的问题是依赖于上下文的。一般来说,你可以说,正如你所说,每种方法都可以成为某种应用中的辅助方法。但我相信在大多数情况下,辅助方法更多的是将一些通用方法划分为几个更小的方法,以提供更清晰的图像和良好的代码。

答案 4 :(得分:1)

通常我将辅助方法定义为使类更易于使用的方法,但不提供通过调用其他更复杂的方法无法实现的新行为。

示例:

  • +[NSObject new][[NSObject alloc] init];
  • 的辅助方法
  • NSClassFromString(str)objc_getClass([str UTF8String]);
  • 的辅助方法
  • +[NSURL URLWithString:str][[[NSURL alloc] initWithString:str] autorelease];
  • 的辅助方法
  • -[NSURLRequest initWithRequest:request delegate:delegate][request initWithRequest:request delegate:delegate startImmediately:NO]
  • 的辅助方法
  • -[NSString substringFromIndex:]-[NSString substringWithRange:]
  • 的辅助方法

答案 5 :(得分:1)

我会提供一些提供一些通用功能的东西,而不是围绕更复杂的功能或与实现细节有关的东西。例如,对我来说,一个帮助器方法就像NSString上的一个方法,它直接返回一个NSDate,而不是要求你在整个地方使用NSDateFormatters。

在这方面,我将帮助方法分类为帮助您通过将一些常用序列包装到单个函数中来干燥代码的东西,或者您编写的用于包装一些笨拙的代码的东西。另一个API(是的,这两个通常都是一样的。)

冒着看起来像是在试图在我这里搜索我自己的代码的风险,我会指出你在my toolkit repository的扩展目录,其中包含我写的'辅助方法'的一大堆内容在标准的Objective-C类上。例证:+(NSError *)errorWithCFStreamError:(CFStreamError)streamError,这是一个'辅助方法',用于使用在OS X 10.5(和iPhone)中导出的新值将旧式CFStreamError值转换为正确的NSError / CFErrorRef对象。

答案 6 :(得分:1)

在Objective-C上,我认为你可以将任何私有方法称为“辅助方法”,其中私有方法我的意思是方法签名不会出现在.h文件中。即这些是您可能在.m文件的类连续中声明的方法:

@interface MyClass ()
- (void)somePrivateMethod;
@end

其他一些答案是调用辅助方法 - 可选但公共方法对API不重要 - 我宁愿称之为“便捷方法”。