General Programming Guidelines

Language-independent best practices

When we develop software in a community we must consider that our work is not just for ourselves but is expected to be used, adapted and (even) improved by others in that community. Much of The Unix Philosophy is worth considering when developing in such a context.

The Unix Philosophy principles apply to the creation of the software, but there are also some universally recommended best practices when it comes to the software development work-flow itself [BestPractices]:

  • Use a version management tool,
  • Make a build in one step,
  • Test suites to make sure what you are working on does what you think it should,
  • Test-first programming: writing the test for a new line of code before writing that new line of code.

For our specific use case we will support Git as our version management tool (with repositories hosted on the E-CAM GitLab service), CMake and Autotools (complemented by EasyBuild for HPC environments) as our supported build environments and unit/regression testing and continuous integration through the E-CAM GitLab service.

[BestPractices]https://en.wikibooks.org/wiki/Computer_Programming/Standards_and_Best_Practices