我经常在专业环境下用R编程,也为客户或同事编写程序包。这里的一些程序员具有Java背景,并坚持使用S4方法以面向对象的方式进行所有操作。另一方面,我的经验是,在尝试使代码执行您想要执行的操作时,S4实现通常会执行得更糟,并且导致更多的麻烦。

我绝对同意,在某些情况下,您必须能够以受控的方式构造复杂的对象或追加现有对象。但是在大多数情况下,也可以使用经典列表轻松完成S4实现,而无需像定义standardGeneric,方法,构造函数,初始化程序之类的麻烦。

您何时考虑为R编写S4实现?

编辑:为清楚起见,我确实很欣赏R中有关OO的答案和讨论。OOP可以在R中以多种方式完成,但我的问题确实是针对使用S4方法的附加值(value)。

最佳答案

我假设这并不直接适用于您,但是如果您正在为Bioconductor开发软件包,则有一种使用S4的动机,因为他们积极鼓励使用S4,并且在现在的十年中大部分时间都在使用-因此,所有核心软件包大量使用了S4。

我发现所有额外的开销都很痛苦-setGeneric,setMethod,处理NAMESPACE等。话虽如此,我发现它所强加的结构,可扩展性以及其他类似的东西是值得的。与所有内容一样,也要进行权衡。我认为它可以使工作更清洁-我不喜欢S3方法是如何简单地通过命名约定(foo.class)伪装的。话虽这么说,除非被告知我要避免在自己的代码中大量使用S4。

关于oop - 什么时候在R编程中使用S4方法值得,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3602154/

10-12 19:56