我经常在专业环境下用R编程,也为客户或同事编写程序包。这里的一些程序员具有Java背景,并坚持使用S4方法以面向对象的方式进行所有操作。另一方面,我的经验是,在尝试使代码执行您想要执行的操作时,S4实现通常会执行得更糟,并且导致更多的麻烦。
我绝对同意,在某些情况下,您必须能够以受控的方式构造复杂的对象或追加现有对象。但是在大多数情况下,也可以使用经典列表轻松完成S4实现,而无需像定义standardGeneric,方法,构造函数,初始化程序之类的麻烦。
您何时考虑为R编写S4实现?
编辑:为清楚起见,我确实很欣赏R中有关OO的答案和讨论。OOP可以在R中以多种方式完成,但我的问题确实是针对使用S4方法的附加价值。