Re: [Rd] Functions with the same name: best practices

From: Duncan Murdoch <murdoch_at_stats.uwo.ca>
Date: Tue 23 Aug 2005 - 10:16:31 GMT

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



R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Tue Aug 23 20:19:10 2005

This archive was generated by hypermail 2.1.8 : Mon 20 Feb 2006 - 03:21:18 GMT