这一规范并不是硬性要求,但是可以帮助我们写出方便和他人交流的代码。
使用命名空间namespaces
除了R的基础包(Base packages)中的函数,其它函数在调用时最好加上命名空间,以方便阅读。
- 如果需要调用包中的私有函数,需要写成mypackage:::.somePrivateFunc()的形式。最初,人们习惯私有函数的写法是以.起始的匈牙利命名法的函数名。但是新的R书写规范正在逐步取消命名中含有.的做法,因为这样使用得函数名做为参数传递时会产生不便。
- 如果调用其它包中的函数,需要写成otherpackage::aFunc()的形式。但是需要注意的是,所有需要Imports的其它包必须在DESCRIPTION文件中声明,否则在包的编译过程中不会预载相应的包,这会造成软件包的可移植性差。
退格与列
- 使用4个空格来替换tab
- 每一行不超过80个字符
变量名
- 使用匈牙利命名法:以一个或者多个小写字母起始,接着首字母大写的单词缩写,中间不使用除字母与数字以外的其它字符。
函数名
- 使用匈牙利命名法:以一个或者多个小写字母起始,接着首字母大写的单词缩写,中间不使用除字母与数字以外的其它字符。
- 避免使用.,比如some.func
合理使用空格
- 在逗号后一定使用空格。比如a, b, c。而不应该是a,b,c。这样做有利于系统自动换行。
- 在函数传递参数时等号(=)左右不使用空格。比如someFunc(a=1, b=2),而不应该是someFunc(a = 1, b = 2)
- 在逻辑运算符左右使用空格,比如a == b。
- 在赋值运算符左右使用空格,比如a <- 2
注释
- 使用连续两个##开始注释
- 注释需要和代码的退格保持一致
其它
- 使用<-而不是=做为赋值符号
One thought on “R扩展包的写作规范”