-
Notifications
You must be signed in to change notification settings - Fork 7
Home
The idea of this wiki is to document the Software Development practices that we consider as standards. To contribute, please respect the following guidelines:
-
Keep it simple: The home page (this page) is for general guidelines. More elaborate recommendations or examples should be provided in the specific page for each topic.
-
Unless previously agreed, don't overwrite content.
And that's it! Currently, the wiki is divided into the following sections:
-
Coding Standards: Anything that has to do with coding itself, aimed at making it more readable. This includes naming variables, functions, and classes, code indenting, etc.
-
Software Thinking: Things to consider before starting to write a piece of software...
-
Development Workflow: For now, mostly focused on R, general guidelines for developing Statistical Software.
We also have a section about our Bioghost server, which hosts information regarding how to install and setup Unix software here.
- The 80 characters rule.
- When possible, structure your code as sections/files, with files holding similar functions and sections to give internal structure to your file.
- Use white space for indenting, 4 characters.
- Explain yourself: Add comments.
-
Single line
if
# If it's only a single like if (...) ...then...
-
Multiple lines
ifelse
# Several blocks if (...) { ...then... } else { ... }
- 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
ormyObject
. - Whenever possible, use informative names, e.g.
loglike
instead ofvar1
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 the following:
- Write down the function.
- Document the function: Input/output, examples, and references.
- Write down the tests.
- Build (compile) the package.
- Run the tests and make sure
fun
didn't break anything. - Update the
news.md
andChangeLog
files (that sounds like a good idea).
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
-
ProjectTemplate
A complete workflow for reproducible research. -
represtools
An alternative to ProjectTemplate. -
CodeDepends
Analyzes your code to see dependencies. -
reproducible
An alternative to ProjectTemplate.