Programming notes

From csml-wiki.northwestern.edu
Revision as of 22:44, 27 June 2014 by Administrator (talk | contribs)
Jump to navigation Jump to search

This is a collection of miscellaneous thoughts on coding style recommended for use in our lab.

Notes on C

  1. Don't put multiple commands on a single line. One command per line.
  2. For symmetry reasons, I dislike this layout:
    if (i==2){
            i++;
    }
    

    Much cleaner is this:

    if (i==2)
    {
            i++;
    }
    
  3. For clarity, I prefer indentations to be 8 spaces (not 4). If you follow this, you'll be in good company. Insert the following snippet in your ~/.emacs file:
    (defconst my-c-style
            '((c-basic-offset       . 8)
              (c-offsets-alist      . ((substatement-open . 0)
                                      )
              )
             )
     "C Style")
    (defun my-c-mode-common-hook ()
            (c-add-style "personal" my-c-style t)
            (setq fill-column 135)
    )
    (add-hook 'c-mode-common-hook 'my-c-mode-common-hook)
    
  4. The following is a surprisingly common programming mistake:
    double x, y;
    if (x == y)
    {
            do_something();
    }
    

    Due to rounding errors, you should not test for exact equality between two floating point numbers (or a floating point number and a constant). Instead, do:

    #define EPS 1e-9 /* or some other threshold small enough for your purposes */
    
    double x, y;
    if (fabs(x-y) < EPS)
    {
            do_something();
    }