函数的命名很重要。理想情况下,函数名应该简短,但又能清楚地表明函数的功能。这很难做到!但清晰比简短更重要,因为 RStudio 的自动补全功能使得输入长名称变得很容易。
一般来说,函数名应该用动词,参数名应该用名词。也有一些例外情况:如果函数计算的是一个广为人知的名词(例如,mean() 就比 compute_mean() 更好),或者是在访问对象的某个属性(例如,coef() 就比 get_coefficients() 更好),那么使用名词是可以的。如果你使用了像 "get"、"compute"、"calculate" 或 "determine" 这样含义非常宽泛的动词,这往往是一个信号,说明用名词可能更好。请运用你的最佳判断,如果之后想到了更好的名字,不要害怕重命名函数:
# 太短 f() # 不是动词,也没有描述性 my_awesome_function() # 长,但清晰 impute_missing() collapse_years()
如果你的函数名由多个单词组成,我推荐使用 "snake_case"(蛇形命名法),即每个小写单词之间用下划线分隔。camelCase(驼峰命名法)也是一种流行的替代方案。选择哪一种其实并不重要,重要的是保持一致:选定其中一种并坚持使用。R 语言本身在这方面就不太一致,但对此你也无能为力。请确保不要掉进同样的陷阱,让你的代码尽可能保持一致:
# 千万不要这样做! col_mins <- function(x, y) {} rowMaxes <- function(y, x) {}
如果你有一系列功能相似的函数,请确保它们具有一致的名称和参数。使用一个共同的前缀来表明它们是相互关联的。这比使用共同的后缀更好,因为自动补全功能可以让你输入前缀后看到该系列的所有成员:
# 好 input_select() input_checkbox() input_text()