Changes between Version 2 and Version 3 of Coding_Conventions


Ignore:
Timestamp:
2009-06-23 23:05:01 (4 years ago)
Author:
Philip
Comment:

simplified correcter guidelines

Legend:

Unmodified
Added
Removed
Modified
  • Coding_Conventions

    v2 v3  
     1(Note: This document is aimed at C++ code. We should write something similar for JS.) 
     2 
     3== Introduction == 
     4 
     5The goal of these coding conventions is to encourage consistency within the code, rather than claiming some particular style is better than any other. As such, the main guideline is: 
     6 * When modifying a piece of code, try to follow its existing style. 
     7Our code is currently self-inconsistent in places, but the following guidelines attempt to describe the most common style and are what we should converge towards. Obviously we want clean, readable, adequately-documented code - lots of articles and books already talk about how to do that - so we mostly describe boring typographic details. 
     8 
     9== Brief guidelines == 
     10 
     11 * All source files (.cpp, .h) must start with the following header, before any other content: 
     12{{{ 
     13/* Copyright (C) 2009 Wildfire Games. 
     14 * This file is part of 0 A.D. 
     15 * 
     16 * 0 A.D. is free software: you can redistribute it and/or modify 
     17 * it under the terms of the GNU General Public License as published by 
     18 * the Free Software Foundation, either version 2 of the License, or 
     19 * (at your option) any later version. 
     20 * 
     21 * 0 A.D. is distributed in the hope that it will be useful, 
     22 * but WITHOUT ANY WARRANTY; without even the implied warranty of 
     23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
     24 * GNU General Public License for more details. 
     25 * 
     26 * You should have received a copy of the GNU General Public License 
     27 * along with 0 A.D.  If not, see <http://www.gnu.org/licenses/>. 
     28 */ 
     29}}} 
     30replacing `2009` with the year that the file was last updated. 
     31 
     32 * Wrap header files in include guards, using the name `INCLUDED_`''filename'', e.g. the file `Foo.h` should say: 
     33{{{ 
     34#ifndef INCLUDED_FOO 
     35#define INCLUDED_FOO 
     36... 
     37#endif // INCLUDED_FOO 
     38}}} 
     39 
     40 * The first non-comment line of any source file must be `#include "precompiled.h"` 
     41 
     42 * In header files, avoid `#include` and use forward declarations wherever possible. 
     43 
     44 * Use tabs for indentation, not spaces. 
     45 
     46 * Indent braces like 
     47{{{ 
     48int CExampleObject::DoSomething(int value) 
     49{ 
     50    if (value != 0) 
     51    { 
     52        Prepare(); 
     53        m_Value = value; 
     54    } 
     55    return value; 
     56} 
     57}}} 
     58 
     59 * Class names are !CamelCase and prefixed with `C`, e.g. `CGameObject`. Member functions are !CamelCase, e.g. `CGameObject::SetModifiedFlag(...)`. Member variables are !CamelCase prefixed with `m_`, e.g. `CGameObject::m_ModifiedFlag`. Files are named `GameObject.cpp`, `GameObject.h`, usually with one major class per file (possibly with some other support classes in the same files). 
     60 
     61 * Use [http://www.cppdoc.com/ CppDoc] comments, e.g. 
     62{{{ 
     63class CExampleObject 
     64{ 
     65    /** 
     66     * Sets the object's current value to the passed value, if it's non-zero. 
     67     * 
     68     * @param v the new value to set it to, or 0 to do nothing. 
     69     * 
     70     * @return the value that was passed in. 
     71     */ 
     72    int DoSomething(int v); 
     73}; 
     74}}} 
     75 
     76 * Use `CStr` instead of `std::string`. Use `CStrW` instead of `std::wstring`. 
     77 
     78 * Use STL when appropriate. 
     79 
     80 * ... 
     81 
     82= Old document = 
     83 
     84''The following content might be somewhat incorrect or outdated, but it's preserved here since it contains some useful information.'' 
     85 
    186== Objective == 
    287