User Tools

Site Tools


code_formatting_standards

This is an old revision of the document!


Code Formatting Standards

FIXME This page is a work in progress and currently NOT official! FIXME

General Conventions

As a general rule, Evergreen contributions should follow these basic conventions.

  • Indents - tabs vs. spaces
    • The general rule for all files needing indentation is 4 space indents, no literal tabs
    • The following file types are exceptions to this rule
      1. Code written in C
      2. Database schema/code files (.sql files)
      3. Makefiles
      4. Plain text files
  • Tokens should be separated by whitespace (i.e '$this = 1' not '$this=1')
  • Opening braces should be on the same line as the corresponding token and 'else' should be "cuddled"
    if ($this) {
        that();
    } else {
        something();
    }

    not

    if ($this)
    {
        that();
    }
    else
    {
        something()
    }
  • Control structures should be followed by spaces, function names should not (see 'if' vs 'that' above)

Tool Specifics

Vim

The following Vim options or something similar (often set via .vimrc) will help with proper indentation:

set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set backspace=indent,eol,start
autocmd BufEnter ?akefile*,*txt,*out,*csv,*.c,*.h,*.sql set noet "use real tabs in Makefiles, text files, C code, and SQL files

In addition, the following VIM options have been recommended by a prominent Evergreen developer but are not actually format related :-) :

set hlsearch
vnoremap < <gv
vnoremap > >gv
set nobk
set whichwrap=b,s,<,>,[,]
set smartcase
filetype on
syntax enable
au BufNewFile,BufRead *.xhtml setf html
au BufNewFile,BufRead *.bsh setf java
au BufNewFile,BufRead *.ftl setf html
set bg=dark
let loaded_matchparen = 1

perltidy

The following options are recommended when using perltidy to format your Perl code:

  • -b : Backup and modify in place
  • -ce : Enable the "cuddled else" style

Example:

perltidy -ce -b Object.pm

This will tidy Object.pm and move your original to Object.pm.bak. Note that this will clobber an existing Object.pm.bak file!

code_formatting_standards.1268766482.txt.gz · Last modified: 2022/02/10 13:33 (external edit)

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki

© 2008-2022 GPLS and others. Evergreen is open source software, freely licensed under GNU GPLv2 or later.
The Evergreen Project is a U.S. 501(c)3 non-profit organization.