doc/coding_style.dox
changeset 40 8f4e8273a458
child 41 b11737922197
equal deleted inserted replaced
-1:000000000000 0:d253e2d3e451
       
     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 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 cs-excep Exceptions
       
    99 
       
   100 When writing exceptions please comply the following naming conventions.
       
   101 
       
   102 \code
       
   103 ClassNameEndsWithException
       
   104 \endcode
       
   105 
       
   106 or
       
   107 
       
   108 \code
       
   109 ClassNameEndsWithError
       
   110 \endcode
       
   111 
       
   112 \section header-template Template Header File
       
   113 
       
   114 Each LEMON header file should look like this:
       
   115 
       
   116 \include template.h
       
   117 
       
   118 */