R语言编码类型 · 谷歌宣布
本文译自《Google’s R Style Guide》,原文链接:https://google.github.io/styleguide/Rguide.xml?from=timeline&isappinstalled=0
R是一门主要用于统计阐明和作图的高级编程语言。拟定本类型的目标是让R代码更容易被领略、分享和验证。以下的类型是谷歌的R用户社区配合接头制定的。
目次文件名:以.R末了标识符:变量名(variable.name可能variableName)、函数名(FunctionName)、常数变量名(kConstantName)行长度:较大80个字符缩进:两个空格,不利用制表符(tab)空格大括号:开始在同一行,竣事独立一行else函数:两侧用大括号赋值:用<-,不消=分号:不利用总体机关注释类型:所有的注释以#和一个空格开始,句中注释前需要两个空格函数的界说和应用函数说明TODO气势气魄:TODO(用户名)attach函数:制止利用自编函数:报错的处所应该利用stop()工具和要领:尽大概制止S4类工具,不能将S3类和S4类混用
1.文件名文件名应该以.R竣事,并且应该具有意义。GOOD: predict_ad_revenue.RBAD: foo.R
2.标识符标识符包罗变量名、函数名、常数变量名等。不要利用下划线(_)或连字符(-)。变量名,variable.name较好的,variableName也可以接管GOOD: avg.clicksOK: avgClicksBAD: avg_Clicks函数名,只管利用动词形式,除非在建设一个类的工具时,如函数lm()GOOD: CalculateAvgClicksBAD: calculate_avg_clicks, calculateAvgClicks常数变量名,应与函数定名雷同,而且以字母k开头
3.行长度每行不高出80个字符。
4.缩进利用两个空格举办缩进,不要利用制表符(tab),也不能混用空格与制表符。除非在断行时,为了对齐首字母而利用了制表符。
5.空格在所有的二元运算符(=, +, -, <-等等)两侧利用空格。逗号前不加空格,后要加空格。除非在函数中设定参数利用等号的时候,可以不加空格。GOOD:tab.prior <- table(df[df$days.from.opt < 0, “campaign.id”])total <- sum(x[, 1])total <- sum(x[1, ])
BAD:tab.prior <- table(df[df$days.from.opt<0, “campaign.id”]) # 小于号两侧没有空格tab.prior <- table(df[df$days.from.opt < 0,”campaign.id”]) # 逗号后头没有空格tab.prior<- table(df[df$days.from.opt < 0, “campaign.id”]) # 赋值号(<-)前面没有空格tab.prior<-table(df[df$days.from.opt < 0, “campaign.id”]) # 赋值号(<-)两侧没有空格total <- sum(x[,1]) # 逗号后头没有空格total <- sum(x[ ,1]) # 逗号后头没有空格,前面多了空格
在小括号左侧添加空格,除非在应用函数的时候。不要在小阔内两头侧利用空格。GOOD: if (debug)BAD: if(debug), if ( debug )
为了对齐名目可以利用更多的空格。
6.大括号GOOD:if (is.null(ylim)) { ylim <- c(0, 0.06)}
GOOD:if (is.null(ylim)) ylim <- c(0, 0.06)
BAD:if (is.null(ylim)) ylim <- c(0, 0.06) if (is.null(ylim)) {ylim <- c(0, 0.06)}
7.else函数GOOD:if (condition) { one or more lines} else { one or more lines}
BAD:if (condition) { one or more lines}else { one or more lines}
BAD:if (condition) one lineelse one line
8.赋值GOOD: x <- 5BAD: x = 5
9.分号不要利用分号来竣事语句,可能为了让每行多写几个语句而利用分号。
10.总体机关凭据如下顺序组织语言:版权说明作者说明文件描写说明,包罗措施的目标,输入和输出等source()和library()函数界说执行语句说明
测试文件应该另立文件,并以originalfilename_test.R定名。
11.注释类型所有的注释以#和一个空格开始,句中注释前需要两个空格。
12.函数界说和应用界说函数时,应该先把没有默认值的参数列在前面。断行时应留意等号两侧的完整性。
13.函数说明应该在函数界说的首行下面增加注释说明,说明应该包罗一句话的描写说明、各参数的界说(以Args开始)、输出值的描写(以Returns开始)。例子如下:
14.TODO气势气魄编程时通篇利用TODO气势气魄,也就是要明晰描写所编写措施的目标。
15.attach函数只管制止利用attach函数,因为它容易导致错误的产生。
16.自编函数在报错的处所应该利用stop()。
17.工具与要领S语言包罗S3和S4两类工具系统,都可以在R语言中利用。S3类更具互动性和机动性,而S4类则越发正式和严格。编程中只管利用S3类,S4类主要是在引用C++代码时利用。制止同时利用两种类。想相识两类详细内容,请自行查察第3篇参考文献。
写在最后 除非有充实的来由,所有R语言用户应该遵循上面描写的编码类型。见贤思齐,见不贤而内自省也。类型一旦成立,各人将会存眷你的代码说了什么,而不会花更多的时间在研究你的代码是怎么说的。而已,写代码的文章已经够多了,而代码自己则是更有趣的。祝列位R语言用户玩得兴奋!
参考文献http://www.maths.lth.se/help/R/RCC/ – R Coding Conventionshttp://ess.r-project.org/ – For emacs users. This runs R in your emacs and has an emacs modeThomas Lumley’s “Programmer’s Niche: A Simple Class, in S3 and S4” in R News 4/1, 2004, pgs. 33 – 36: https://cran.r-project.org/doc/Rnews/Rnews_2004-1.pdf
接待插手本站果真乐趣群软件开拓技能群乐趣范畴包罗:Java,C/C++,Python,PHP,Ruby,shell等各类语言开拓履历交换,各类框架利用,外包项目时机,进修、培训、跳槽等交换QQ群:26931708
Hadoop源代码研究群乐趣范畴包罗:Hadoop源代码解读,改造,优化,漫衍式系统场景定制,与Hadoop有关的各类开源项目,总之就是玩转HadoopQQ群:288410967