[Rd] Functions with the same name: best practices
Duncan Murdoch
murdoch at stats.uwo.ca
Tue Aug 23 12:16:31 CEST 2005
hadley wickham wrote:
> Ok, here's another best practices question - let's say I'm writing a
> package and I want to use a function name that is already claimed by a
> function in the base R packages. For the sake of argument, let's
> pretend this function is for profiling the performance of a function
> (like Rprof for example), and so an obvious name that comes to mind is
> profile. This, of course, clashes with the built in profile for
> "investigating behavior of objective function near the solution
> represented by fitted."
>
> A little thinking and a quick survey of other packages reveal some
> possible solutions:
>
> * capitalise the function differently (eg. Profile)
> * use a prefix/suffic (eg. Rprof)
> * use a thesaurus
> * use namespaces (and rely on others to use namespaces correctly in
> their code/packages)
>
> What would you suggest?
You should use a namespace. It will protect your code against someone
else using one of your function names.
If the function is for internal use only, that's sufficient. If you
want to export the function, you should try to avoid conflicting with
existing functions that you expect users to have installed, because it
becomes quite inconvenient to users: their scripts depend on the load
order of packages unless they put <pkg>:: in front of each call.
I think using a thesaurus would be best (if by that you mean choosing a
different name that still describes the function), but will often fail,
in which case I'd use the prefix/suffix decoration. Changing only
capitalization makes it nearly impossible to talk about your function
without confusion.
Duncan Murdoch
More information about the R-devel
mailing list