如果在Objective-C中编写方法实现,那么在相应的@interface块中总结类的方法是非常标准的。公共可访问的方法进入头文件的接口,非公共方法可以在实现文件的顶部进入空类别。
但是为每个方法声明一个接口并不是必需的。如果您只引用同一类/文件的实现代码下面的方法,则无需在其他地方放置任何声明。
-(void) doSomething {
}
-(void) doSomethingElse {
[self doSomething];
}
来自另一种语言,这对我来说是新的。而且我似乎无法决定是否保持接口块干净,或者是否应该防止它是好的和漂亮的,因为方法实现的顺序看起来像是一个奇怪的依赖。
一般公众对此事的看法是什么?
答案 0 :(得分:1)
我遵循的一般规则是,如果调用doSomething
的唯一方法是doSomethingElse
,那么不就可以将doSomething
作为声明私有的一部分接口。但是当第二种方法使用doSomething
时,我将它添加到声明的接口。
这背后的想法是,只要从一个地方调用该方法,就没有理由将其视为模块化或可重用的代码。相反,它更像是为了整理其调用方法的实现而存在的方法。从本质上讲,该方法并不真正独立,因此将其视为接口方法毫无意义。但是,只要第二种方法进行相同的调用,它就会证明代码实际上不仅仅是原始上下文中的可重用和有用,而且能够作为一个有用的函数独立存在。所以在那时,它成为私有接口的声明部分。
答案 1 :(得分:0)
其他一些编码风格的选择使得回答这个问题变得非常简单:
如果您在其声明点记录每个方法,那么没有声明意味着这些方法缺少文档,或者它们在定义时记录;无论哪种方式都不一致。如果你遵循思想流派,大多数方法都应该从他们的名字那么不言自明,以至于他们不需要文档,这可能不是问题。
有些人主张从更一般到更具体的订购方法;在该模型中,您的示例排序错误,修复它的唯一方法是声明。
还有一个问题是,当您执行简单的重新排序或重新分解时,您是否会觉得很难获得意外的编译器错误,因为您之前恰好开始使用某个方法,并且必须停止并添加声明那一点。