"The good news about computers is that they do what you tell them to do. The bad news is that they do what you tell them to do."

-- unsure; often attributed without source to information philosopher Ted Nelson

Software development

Software development guidelines by Ken Gaillot

About these guidelines

(I wrote this in 2001, and never developed it as far as I originally intended. So it might or might not be useful to anybody!)

I was motivated to write these guidelines for two reasons:

So, these guidelines document some "best practices" that I have accumulated over the years. The guidelines address the following concerns:

The guidelines are primarily targeted at developing C/C++ programs in a Unix-like environment. They reflect a preference for GNU tools. They are aimed at software packages that will be distributed to people other than the programmer. Trivial programs for the programmer's own use or the use of small group can simplify or ignore many of these guidelines.

First, to give specific definitions to commonly used terms:

The development environment

  1. Language choice
  2. Package naming
  3. Coding environment
  4. Version control
  5. Debugging

Fundamentals

  1. Licensing
  2. Installation
  3. Distribution
  4. Documentation

Programming

  1. Naming conventions
  2. Object oriented programming
  3. Portability
  4. Native language support
  5. Library design
  6. Configuration
  7. Memory management
  8. Input and output

Cheat sheet

  1. Summary of development tools
  2. Summary of naming guidelines
  3. Easy way to follow these guidelines (devtree)

Related info