R编程 8个编码风格提示
R 是一种开源的编程语言,作为统计软件和数据分析工具被广泛使用。R通常带有命令行界面。R可以在Windows、Linux和macOS等广泛使用的平台上使用。另外, R编程语言 是最新的尖端工具。软件工程不仅仅是学习一种语言和构建一些软件。作为一名软件工程师或软件开发人员,你应该写出 好的软件 。 好的软件可以通过阅读项目中写的一些代码来判断。
如果代码很容易理解,也很容易修改,那么肯定是好的软件,开发人员也喜欢在这方面工作。对于一个R程序员初学者来说,掌握并开始使用编码中的良好实践是一个好主意。谷歌和R-guru Hadley Wickham在R编码风格指南上有很好的提示。所以在这篇文章中,我们将讨论六个编码风格提示,帮助你成为一个更好的R语言程序员。
1.注释
开发人员使用注释来说明他们代码中某一行的目的,这是一件很常见的事情。的确,注释对解释代码的作用很有帮助,但它也需要对代码进行更多的维护。有时它非常重要,例如……如果你正在处理 一个第三方的API,你需要解释一些行为,你可以使用注释来解释代码,但不要在没有必要的地方写注释。所以在R编程中,总是 用注释符号#和一个空格 开始注释 一行。 Hadley Wickham建议用 “-“和”= “作为注释行的剩余部分,将文件分割成易于阅读的大块。请参考下面的示例代码片段。
# Read table ----------------------------------
# Read table ==================================
2.赋值
R有一个不寻常的赋值运算符'<-‘,而不是’=’符号。因此, 使用’ <-‘符号,而不是’=’符号, **是一个很好的做法 **。 请参考下面的示例代码片段。
良好的做法 。
# Good Practice
x <- 10
不好的做法 。
# Bad Practice
x = 10
3.文件名
文件的名称应该是有意义的,以 ‘.R ‘结尾。请参考下面的示例代码片断。
良好做法 。
# Good Practice
fit-models.R
linear-regression.R
不好的做法 。
# Bad Practice
models.R
stuff.R
如果文件需要按顺序运行,请在它们前面加上数字,如下所示。
0-fit-models.R
1-linear-regression.R
2-neural-network.R
4.对象名称
“计算机科学中只有两件难事:缓存失效和事物命名”。
- 菲尔-卡尔顿
变量和函数名必须使用 小写字母。 使用下划线 ‘_ ‘来分隔名称中的单词。一般来说,变量名应该是名词,而函数名应该是动词。请参考下面的示例代码片断。
良好做法 。
# Good Practice
number_of_students
get_price
不好的做法 。
# Bad Practice
GetPrice
getprice
5.间隔
在所有的infix运算符( **=,+,-, <-,等等 **)周围放一个空格。在函数调用中使用=时,也要执行同样的规则。总是在逗号后加一个空格,而不是在逗号前。请参考下面的示例代码片段。
良好做法 。
# Good Practice
perimeter_of_rectangle = 2(length + width), na.rm = TRUE)
不好的做法 。
# Bad Practice
perimeter_of_rectangle=2(length+width),na.rm=TRUE)
这条规则有一个小的例外,例如在 : 、 ::和: :的情况下,不需要在它们周围添加空格。请参考下面的示例代码片段。
良好做法 。
# Good Practice
x <- 1:20
value::real
不好的做法 。
# Bad Practice
x <- 1 : 20
value :: real
在左括号前加一个空格,除了在函数调用中。请参考下面的示例代码片断。
良好做法 。
# Good Practice
if (yes) do(x)
run(x, y)
不好的做法 。
# Bad Practice
if(yes)do(x)
run(x, y)
除非有逗号,否则不要在小括号或方括号中的代码周围放空格。请参考下面的示例代码片断。
良好做法 。
# Good Practice
student[1, ]
不好的做法 。
# Bad Practice
# Needs a space after the comma
student[1,]
# Put space after comma not before
student[1 ,]
6.大括号
开头的大括号不应该出现在自己的行中,而应该总是跟在一个新的行中。闭合的大括号应该总是在它自己的行上,除非它后面有else。始终缩进大括号内的代码。请参考下面的示例代码片段。
良好做法 。
# Good Practice
if (x > 0 && foo) {
cat("X is positive")
}
if (x == 0) {
log(a)
} else {
a ^ x
}
不好的做法 。
# Bad Practice
if (x > 0 && foo)
cat("X is positive")
if (x == 0) {
log(a)
}
else {
a ^ x
}
在同一行写很短的语句 也可以,如下 图所示。
# Good Practice
if (x > 0 && foo) cat("X is positive")
7.行的长度
尽量将代码限制在每行80个字符。这可以舒适地放在一个有合理大小的字体的打印页上 。
8.缩进
当缩进你的代码时,使用 两个空格。 不要使用制表符或混合使用制表符和空格。唯一的例外是,如果一个函数定义超过多行。在这种情况下,缩进第二行到定义开始的地方。请参考下面的示例代码片段。
良好做法 。
# Good Practice
function_name <- function(a = "a long argument",
b = "another argument",
c = "another long argument") {
# As usual code is indented by two spaces
}