Skip to content
George G. Vega Yon edited this page Jan 15, 2021 · 25 revisions

Welcome to the Software Development Wiki!

The idea of this wiki is to document whatever Software Development practices should we consider as standards. To contribute, please attain to the follow guidelines:

  1. Keep it simple: The home page (this page) is for general guidelines. More elaborated recommendations or examples should be provided in each topic's specific page.

  2. Unless previously agreed, don't overwrite content.

And that's it! Currently, the wiki is divided in the following sections:

  1. Coding Standards: Anything that has to do with coding itself so that it's more readable, this includes naming variables, functions, and classes, code indenting, etc.

  2. Software Thinking: Before starting to write a piece of software...

  3. Development Workflow: For now, mostly focused on R, general guide lines for developing Statistical Software.

  4. Misc

We also have a section about our Bioghost server, which keeps a lot of information regarding how to install and setup Unix software here.

Coding Standards

General Overview

  1. The 80 characters rule.
  2. When possible, structure your code as sections/files, with files holding similar functions and sections to give internal structure to your file.
  3. Use white space for indenting, 4 characters.
  4. Explain yourself: Add comments.

Control-flow statements

  1. Single line if

    # If it's only a single like
    if (...)
        ...then...
  2. Multiple lines ifelse

    # Several blocks
    if (...) {
        ...then...
    } else {
        ...
    }

Variable/Objects names

  1. Never use dots to name objects, e.g. my.object. Both R and C++ use the dot symbol to access (or call) methods. Instead use either underscore or capital letters, e.g. my_object or myObject.
  2. Whenever possible, use informative names, e.g. loglike instead of var1

Software Thinking

Development Workflow

General Overview

Unfolding the "Software Thinking", once you have set up the project (whereas an R package, C/C++ library, etc.), the development workflow is an iterative process. For each fun in functions do:

  1. Write down the function
  2. Document the function: Input/output, examples, and references.
  3. Write down the tests
  4. Build (compile) the package
  5. Run the tests and make sure fun didn't break anything.
  6. Update the news.md and ChangeLog files (that sounds like a good idea)

Misc

R-packages

For R package development

  • devtools: An R package for package developers.
  • roxygen: For documenting functions.
  • testthat: For making testing fun.
  • codecov: To track the code coverage.

For reproducible research

More references

  • The Art of R programming
  • R packages
  • Advanced R
Clone this wiki locally