使用无标题方法实现是好的做法还是不赞成?

时间:2011-04-18 12:27:00

标签: objective-c interface coding-style implementation

如果在Objective-C中编写方法实现,那么在相应的@interface块中总结类的方法是非常标准的。公共可访问的方法进入头文件的接口,非公共方法可以在实现文件的顶部进入空类别。

但是为每个方法声明一个接口并不是必需的。如果您只引用同一类/文件的实现代码下面的方法,则无需在其他地方放置任何声明。

-(void) doSomething {
}

-(void) doSomethingElse {
    [self doSomething];
}

来自另一种语言,这对我来说是新的。而且我似乎无法决定是否保持接口块干净,或者是否应该防止它是好的和漂亮的,因为方法实现的顺序看起来像是一个奇怪的依赖。

一般公众对此事的看法是什么?

2 个答案:

答案 0 :(得分:1)

我遵循的一般规则是,如果调用doSomething的唯一方法是doSomethingElse,那么就可以将doSomething作为声明私有的一部分接口。但是当第二种方法使用doSomething时,我将它添加到声明的接口。

这背后的想法是,只要从一个地方调用该方法,就没有理由将其视为模块化或可重用的代码。相反,它更像是为了整理其调用方法的实现而存在的方法。从本质上讲,该方法并不真正独立,因此将其视为接口方法毫无意义。但是,只要第二种方法进行相同的调用,它就会证明代码实际上不仅仅是原始上下文中的可重用和有用,而且能够作为一个有用的函数独立存在。所以在那时,它成为私有接口的声明部分。

答案 1 :(得分:0)

其他一些编码风格的选择使得回答这个问题变得非常简单:

  • 如果您在其声明点记录每个方法,那么没有声明意味着这些方法缺少文档,或者它们在定义时记录;无论哪种方式都不一致。如果你遵循思想流派,大多数方法都应该从他们的名字那么不言自明,以至于他们不需要文档,这可能不是问题。

  • 有些人主张从更一般到更具体的订购方法;在该模型中,您的示例排序错误,修复它的唯一方法是声明。

还有一个问题是,当您执行简单的重新排序或重新分解时,您是否会觉得很难获得意外的编译器错误,因为您之前恰好开始使用某个方法,并且必须停止并添加声明那一点。