User Tools

Site Tools


development:ohdsi_code_style_for_r

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Last revision Both sides next revision
development:ohdsi_code_style_for_r [2015/02/06 04:12]
schuemie created
development:ohdsi_code_style_for_r [2018/11/13 07:57]
schuemie [Indentation]
Line 17: Line 17:
 Place spaces around all infix operators (=, +, -, <-, etc.). The same rule applies when using = in function calls. Always put a space after a comma, and never before (just like in regular English). Place spaces around all infix operators (=, +, -, <-, etc.). The same rule applies when using = in function calls. Always put a space after a comma, and never before (just like in regular English).
  
-==== Good ====+**Good**
  
 ''​average <- mean(feet / 12 + inches, na.rm = TRUE)''​ ''​average <- mean(feet / 12 + inches, na.rm = TRUE)''​
  
-==== Bad ====+**Bad** 
 ''​average<​-mean(feet/​12+inches,​na.rm=TRUE)''​ ''​average<​-mean(feet/​12+inches,​na.rm=TRUE)''​
  
 There’s a small exception to this rule: :, :: and ::: don’t need spaces around them.  There’s a small exception to this rule: :, :: and ::: don’t need spaces around them. 
  
-==== Good ====+**Good** 
 ''​x <- 1:​10''​ ''​x <- 1:​10''​
  
 ''​base::​get''​ ''​base::​get''​
  
-==== Bad ====+**Bad** 
 ''​x <- 1 : 10''​ ''​x <- 1 : 10''​
  
Line 38: Line 41:
 Place a space before left parentheses,​ except in a function call. Place a space before left parentheses,​ except in a function call.
  
-==== Good === +**Good** 
-''​if (debug) do(x)''​+<​code>​ 
 +if (debug) ​
 +  ​do(x) 
 +}
  
-''​plot(x, y)''​+plot(x, y) 
 +</​code>​
  
-==== Bad ==== +**Bad**
-''​if(debug)do(x)''​+
  
-''​plot (x, y)''​+<​code>​ 
 +if(debug){ 
 +  do(x) 
 +
 + 
 +plot (x, y) 
 +</​code>​
  
 Extra spacing (i.e., more than one space in a row) is ok if it improves alignment of equal signs or assignments (<-). Extra spacing (i.e., more than one space in a row) is ok if it improves alignment of equal signs or assignments (<-).
Line 52: Line 64:
 Do not place spaces around code in parentheses or square brackets (unless there’s a comma, in which case see above). Do not place spaces around code in parentheses or square brackets (unless there’s a comma, in which case see above).
  
-==== Good ===+**Good**
  
-''​if (debug) do(x)''​+<​code>​ 
 +if (debug) ​
 +  ​do(x) 
 +}
  
-''​diamonds[5, ]''​+diamonds[5, ] 
 +</​code>​
  
-==== Bad ====+**Bad** 
 +<​code>​ 
 +if ( debug ) {  # No spaces around debug 
 +  do(x) 
 +}
  
-''​if ( debug ) do(x)  # No spaces around debug''​ +x[1,]   # Needs a space after the comma 
- +x[1 ,]  # Space goes after comma not beforeCurly braces 
-''​x[1,]   # Needs a space after the comma''​ +</​code>​
- +
-''​x[1 ,]  # Space goes after comma not beforeCurly braces''​+
  
 An opening curly brace should never go on its own line and should always be followed by a new line. A closing curly brace should always go on its own line, unless it’s followed by else. An opening curly brace should never go on its own line and should always be followed by a new line. A closing curly brace should always go on its own line, unless it’s followed by else.
Line 72: Line 90:
 Always indent the code inside curly braces. It’s ok to leave very short statements on the same line: Always indent the code inside curly braces. It’s ok to leave very short statements on the same line:
  
-''​if (y < 0 && debug) message("​Y is negative"​)Line length''​+<​code>​ 
 +if (y < 0 && debug) ​
 +  ​message("​Y is negative"​) 
 +
 +</​code>​
  
 Strive to limit your code to 80 characters per line. This fits comfortably on a printed page with a reasonably sized font. If you find yourself running out of room, this is a good indication that you should encapsulate some of the work in a separate function. Strive to limit your code to 80 characters per line. This fits comfortably on a printed page with a reasonably sized font. If you find yourself running out of room, this is a good indication that you should encapsulate some of the work in a separate function.
Line 84: Line 106:
 Use <-, not =, for assignment. Use <-, not =, for assignment.
  
-==== Good ===+**Good**
  
 ''​x <- 5''​ ''​x <- 5''​
  
-==== Bad ====+**Bad**
  
 ''​x = 5''​ ''​x = 5''​
  
 +===== If-then-else =====
 +
 +If-then-else clauses should always use curly brackets, even if there'​s only one clause and it's one statement.
 +
 +**Good**
 +
 +<​code>​
 +if (a == b) {
 +  doSomething()
 +}
 +</​code>​
 +
 +**Bad**
 +
 +<​code>​
 +if (a == b) doSomething()
 +</​code>​
 +
 +===== Use named arguments =====
 +
 +When calling a function that has more than one argument, make sure to refer to each argument by name instead of relying on the order of arguments. ​
 +
 +**Good**
 +
 +''​translateSql(sql = "​COMMIT",​ targetDialect = "​PDW"​)''​
 +
 +**Bad**
 +
 +''​translateSql("​COMMIT",​ "​PDW"​)''​
  
 ===== Commenting guidelines ===== ===== Commenting guidelines =====
Line 102: Line 153:
  
 ''#​ Plot data ---------------------------''​ ''#​ Plot data ---------------------------''​
 +
 +===== Curly brackets and new line =====
 +Opening curly brackets should precede a new line. A closing curly bracket should be followed by a new line except when it is followed by ''​else''​ or a closing parenthesis.
 +
 +**Good**
 +<​code>​
 +if (a == b) {
 +  doSomething()
 +} else {
 +  doSomethingElse()
 +}
 +</​code>​
 +
 +**Bad**
 +<​code>​
 +if (a == b) 
 +{
 +  doSomething()
 +
 +else 
 +{
 +  doSomethingElse()
 +}
 +</​code>​
 +
development/ohdsi_code_style_for_r.txt · Last modified: 2020/04/06 13:39 by schuemie