[Rd] S3 vs S4 for a simple package

Prof Brian Ripley ripley at stats.ox.ac.uk
Mon Jan 7 10:11:18 CET 2008


On Mon, 7 Jan 2008, Robin Hankin wrote:

> I am writing a package and need to decide whether to use S3 or S4.
>
> I have a single class, "multipol"; this needs methods for "[" and "[<-"
> and I also need a print (or show) method and methods for arithmetic +-
> */^.
>
> In S4, an object of class "multipol" has one slot that holds an array.
>
> Objects of class "multipol" require specific arithmetic operations;
> a,b being
> multipols means that a+b and a*b are defined in peculiar ways
> that make sense in the context of the package. I can also add and
> multiply
> by scalars (vectors of length one).
>
> My impression is that S3 is perfectly adequate for this task, although
> I've not yet finalized the coding.
>
> S4 seems to be "overkill" for such a simple system.
>
> Can anyone give me some motivation for persisting with S4?
>
> Or indeed reassure me that S3 is a good design decision?

Does performance matter?: S4 dispatch is many times slower than S3 
dispatch for such functions. (It is several times slower in general, but 
the difference is particularly marked for primitives.)

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



More information about the R-devel mailing list