A style guide for the gdrplatform organization.
if (
over if(
1 == 1
over 1==1
if (1 == 1) {}
over if (1=1){}
[ , subset]
over [, subset]
<-
over =
validated_se <- validate_SE()
over validate_se <- validate_SE()
function(a = "A")
over function(a="A")
function(big_matrix)
over function(bigMatrix)
compute_metrics_SE
over metrics_SE
.
get*
, setters should start with set*
, boolean checkers should start with is*
# Good fun <- function(param1, param2, param_with_dir_for_st_important = get_st_important_dir()) { # Code is indented by two spaces. ... } # Bad fun <- function(param1, param2, param_with_dir_for_st_important = file.path(system.file(paste(param1, "SE", "rds", sep = "."), package = "important_package"))) { ... }
<-
over =
to differentiate function arguments assignments from function assignments myFunction <- function()
over myFunction = function()
assert
tests for their parametersvapply
over sapply
(or lapply
+ unlist()
if predefining FUN.VALUE is difficult)apply
on data.frame(s) (mapply
is good for row-wise operations) # Good. foo <- function() { # Do stuff. x } # Bad. foo <- function() { # Do stuff. return(x) }
if
and else
statements should be surrounded by curly braces on the same lineif (TRUE) { NULL } else { NULL }
what_is_going_on <- if (is_check()) { flog <- "it's getting hot..." } else if (is_mate()) { flog <- "Oh noooo..." } else { flog <- "there is a hope..." }
R/
(R/assays
=> tests/testthat/test-assays.R
)package.R
package.R
checkmate
, SummarizedExperiment
, etc.expect_equal(obs, exp)
over expect_equal(exp, obs)
^
over **
for exponentiation like 2 ^ 3
over 2**3
.0
's in front of decimals like 0.1
over .1
df[, "alias"] <- df[, "celllinename"]
over df[, 1] <- df[, 2]
df[, fxn_that_returns_idx(x):length(x)] <- NA
over df[, 2:length(x)] <- NA
# Good. idx <- foo() if (length(idx) == 1) { f <- c(f[idx], f[-idx]) } # Bad. if (length(foo()) == 1) { f <- c(f[foo()], f[foo()]) }
usethis::use_package_doc()
#' @note To learn more about functions start with `help(package = "{pkgname}")` #' @keywords internal #' @return package help page "_PACKAGE"
Roxygen: list(markdown = TRUE)
@import
or @importFrom
always in one place - file package.Rnamespace::function_name
gDRstyle::checkPackage()
(use bioc_check = TRUE
to verify
if the requirements for Bioconductor are also met)<type>: <description>
where type
can be one of:fix
: for bugfixes; feat
: for new features;docs
: for documentation changes;style
: for formatting changes that do not affect the meaning of the code;test
: for adding missing tests or correcting existing tests;refactor
: for code changes that neither fixes a bug nor adds a featureci
: for changes to CI configurationPATCH
version;MINOR
version.
Exceptions: All public packages - as to-be-released on Bioconductor have version 0.99.x.MINOR
version regardless of the nature of the changes.sessionInfo()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.