doc/coding_style.dox
author Akos Ladanyi <ladanyi@tmit.bme.hu>
Tue, 22 Apr 2008 22:39:57 +0200
changeset 146 4b42aa24ce12
parent 40 8f4e8273a458
child 209 765619b7cbb2
permissions -rw-r--r--
Makefile cleanup (see ticket #87)
     1 /* -*- C++ -*-
     2  *
     3  * This file is a part of LEMON, a generic C++ optimization library
     4  *
     5  * Copyright (C) 2003-2008
     6  * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
     7  * (Egervary Research Group on Combinatorial Optimization, EGRES).
     8  *
     9  * Permission to use, modify and distribute this software is granted
    10  * provided that this copyright notice appears in all copies. For
    11  * precise terms see the accompanying LICENSE file.
    12  *
    13  * This software is provided "AS IS" with no warranty of any kind,
    14  * express or implied, and with no claim as to its suitability for any
    15  * purpose.
    16  *
    17  */
    18 
    19 /*!
    20 
    21 \page coding_style LEMON Coding Style 
    22 
    23 \section naming_conv Naming Conventions
    24 
    25 In order to make development easier we have made some conventions
    26 according to coding style. These include names of types, classes,
    27 functions, variables, constants and exceptions. If these conventions
    28 are met in one's code then it is easier to read and maintain
    29 it. Please comply with these conventions if you want to contribute
    30 developing LEMON library.
    31 
    32 \note When the coding style requires the capitalization of an abbreviation,
    33 only the first letter should be upper case.
    34 
    35 \code
    36 XmlReader
    37 \endcode
    38 
    39 
    40 \warning In some cases we diverge from these rules.
    41 This is primary done because STL uses different naming convention and
    42 in certain cases
    43 it is beneficial to provide STL compatible interface.
    44 
    45 \subsection cs-files File Names
    46 
    47 The header file names should look like the following.
    48 
    49 \code
    50 header_file.h
    51 \endcode
    52 
    53 Note that all standard LEMON headers are located in the \c lemon subdirectory,
    54 so you should include them from C++ source like this:
    55 
    56 \code
    57 #include <lemon/header_file.h>
    58 \endcode
    59 
    60 The source code files use the same style and they have '.cc' extension.
    61 
    62 \code
    63 source_code.cc
    64 \endcode
    65 
    66 \subsection cs-class Classes and other types
    67 
    68 The name of a class or any type should look like the following.
    69 
    70 \code
    71 AllWordsCapitalizedWithoutUnderscores 
    72 \endcode
    73 
    74 \subsection cs-func Methods and other functions
    75 
    76 The name of a function should look like the following.
    77 
    78 \code
    79 firstWordLowerCaseRestCapitalizedWithoutUnderscores 
    80 \endcode
    81 
    82 \subsection cs-funcs Constants, Macros
    83 
    84 The names of constants and macros should look like the following.
    85 
    86 \code
    87 ALL_UPPER_CASE_WITH_UNDERSCORES 
    88 \endcode
    89 
    90 \subsection cs-loc-var Class and instance member variables, auto variables 
    91 
    92 The names of class and instance member variables and auto variables (=variables used locally in methods) should look like the following.
    93 
    94 \code
    95 all_lower_case_with_underscores 
    96 \endcode
    97 
    98 \subsection pri-loc-var Private member variables
    99 
   100 Private member variables should start with underscore
   101 
   102 \code
   103 _start_with_underscores
   104 \endcode
   105 
   106 \subsection cs-excep Exceptions
   107 
   108 When writing exceptions please comply the following naming conventions.
   109 
   110 \code
   111 ClassNameEndsWithException
   112 \endcode
   113 
   114 or
   115 
   116 \code
   117 ClassNameEndsWithError
   118 \endcode
   119 
   120 \section header-template Template Header File
   121 
   122 Each LEMON header file should look like this:
   123 
   124 \include template.h
   125 
   126 */