R语言中仅供内部调用的非公开函数命名约定咨询
R内部非公开函数的通用命名约定
R生态中针对不希望用户直接调用的内部函数,有两种广泛认可的命名约定:
- 点号(.)开头命名:这是和Python下划线开头私有函数最接近的原生约定,R允许变量名以点号开头,且这类对象默认处于隐藏状态,使用
ls()查看环境对象时默认不会被列出,认知度最高。你案例中的函数可直接命名为.annotateFxn,重构后的代码示例如下:
annotate <- function(param1, param2, param3) { # setup .annotateFxn(setup, param1, param2) .annotateFxn(setup, param1, param2, param3) } .annotateFxn <- function(setup, param1, param2, param3 = NULL) { # Do work, account for if param3 is NULL }
- 加internal后缀命名:如果担心点开头的隐藏属性会降低代码可读性,也可以采用
annotateFxn_internal这类命名,无需隐藏属性,用户看到命名即可明确这是不建议直接调用的内部函数。
如果你是在开发R包,还可以配合NAMESPACE配置做双重保障:只要不把内部函数加入export列表,用户正常加载包后无法直接调用该函数,仅能通过:::语法强制访问,符合绝大多数场景的非公开需求。
内容的提问来源于stack exchange,提问作者Jeff
相关产品推荐
相关产品推荐

