我已经开始使用Xcode的重构功能(编辑>重构>提取)并注意到Xcode提供了提取方法或函数.
我已经在这里和其他地方读到了两者之间的差异,并且理解一个方法是连接到一个类而一个函数不是.所以我不是在寻找定义.
假设不涉及任何参数,何时使用一个而不是另一个?我明白,如果某些事情不是关于这个类,那么它可能是一个函数,但同样,这只是定义.我正在寻找好的用例.
在我个人的情况下,我试图从AppDelegate中重构一些代码applicationDidEnterBackground.由于它是进入后台处理事件的唯一场所,清理代码的唯一方法是将子程序提取到..井,函数中.但是他们会在AppDelegate.m中,所以他们不是方法吗?
嗯..
就个人而言,我只在满足以下两个要求的情况下才使用函数:
void *context混乱).在我看来,C风格的函数应该仅作为最后的手段使用,或者在您真正需要此类应用程序中的功能行为的情况下使用.事件处理既是特定于应用程序的,也是上下文敏感的,因此最好是单独留下并专注于重构常见模式.
当你有一个函数时,你就可以使用函数;-) 你知道定义:方法有一个隐式参数self,并且可以使用它访问实例变量;函数没有隐式参数——它需要的一切都必须传入。
如果您要重构较大方法的一部分,该部分不会访问实例变量,并且您不会重构它以便子类可以覆盖它,然后让 Xcode 为您构建一个函数。完成后添加static它,这样它对于类来说是私有的。
这样做你没有丢失任何东西,并且清楚地表明这段代码是一个函数- 它不会改变对象的状态。
当然,选择函数和方法之间没有硬性界限,它的边界是模糊的。例如,如果一段代码仅访问一个或两个实例变量但不更新它们,那么您可能会选择一个函数 - 再次明确对象状态没有被修改。但是您不想将大量实例变量作为参数传递,这很难阅读(而且效率低下)。
使用函数可能是件好事,而且在 Objective-C 中这样做当然也不错。
| 归档时间: |
|
| 查看次数: |
2922 次 |
| 最近记录: |