Re: [Rd] S4 accessors

From: Seth Falcon <sfalcon_at_fhcrc.org>
Date: Tue 26 Sep 2006 - 04:53:13 GMT

Ross Boylan <ross@biostat.ucsf.edu> writes:
> The code has a couple of decisions for which I could imagine
> alternatives. First, even simple get/set operations on class elements
> are wrapped in functions. I suppose I could just use myinstance@slot to
> do some of these operations, though that is considered bad style in more
> traditional OO contexts.

I like the get/set approach as opposed to using '@'. As long as users don't use '@' you have a fair amount of flexibility to redesign/refactor your code.

> Second, even though the functions are tied to the class, I've defined
> them as free functions rather than methods. I suppose I could create a
> generic that would reject most arguments, and then make methods
> appropriately.

If anyone else is going to extend your classes, then you are doing them a disservice by not making these proper methods. It means that you can control what happens when they are called on a subclass.

> For the documentation, I've created a single page that groups many of
> the functions together. This is a bit awkward, since the return values
> are necessarily the same. Things are worse for replacement functions;
> as I understand it, they must use "value" for their final argument, but
> the value has different meanings and types in different contexts.
>
> Any suggestions or comments?

For accessors, I like to document them in the methods section of the class documentation.

+ seth

--
Seth Falcon | Computational Biology | Fred Hutchinson Cancer Research Center
http://bioconductor.org

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Tue Sep 26 14:56:20 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Tue 26 Sep 2006 - 05:30:11 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.