From d1636558e1d3afc7e48654f19a1460942c2dc2fe Mon Sep 17 00:00:00 2001 From: Ykkrosh Date: Wed, 24 Jun 2009 16:09:06 +0000 Subject: [PATCH] Removed coding conventions document (migrated to http://trac.wildfiregames.com/wiki/Coding_Conventions) This was SVN commit r6923. --- docs/coding_convention.pdf | Bin 68515 -> 0 bytes docs/coding_convention.tex | 237 ------------------------------------- 2 files changed, 237 deletions(-) delete mode 100644 docs/coding_convention.pdf delete mode 100644 docs/coding_convention.tex diff --git a/docs/coding_convention.pdf b/docs/coding_convention.pdf deleted file mode 100644 index 4ac7cd4505612a224dbc4cc98808f28aa166ce5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68515 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 diff --git a/docs/coding_convention.tex b/docs/coding_convention.tex deleted file mode 100644 index e7e662604b..0000000000 --- a/docs/coding_convention.tex +++ /dev/null @@ -1,237 +0,0 @@ -\documentclass[12pt,a4paper]{article} - -\usepackage{parskip} - -\usepackage[linkcolor=black,pdftex]{hyperref} - -\newcommand{\id}[1]{\texttt{#1}} - -\begin{document} - -\title{0 A.D. CODE CONVENTIONS} -\author{Dave Loeser \and Jan Wassenberg} -\maketitle - -\tableofcontents - -\section{Objective} - -The goal of this document is to provide a standardized coding methodology for the 0 A.D. programming team. With but a few guidelines for layout, commenting and naming conventions, the team should feel as if they are reading their own code when reading someone else's code. - -\section{Layout} - -\subsection{Formatting} - -Most editors allow for the conversion of tabs to spaces and most people prefer the use of tabs versus wearing out the spacebar. The size of the tabs is up to each programmer –-- just ensure that you are using tabs. - -Limit the length of a line of code to not more than 80 characters; not everyone has a 1600x1200 display. Functions that have many parameters and extend over 80 characters should be written as: -\begin{verbatim} - SomeFunction( - HWND hWnd, - BITMAP bmDeviceBitmap, - long lAnimationFrame); -\end{verbatim} -instead of: -\begin{verbatim} - SomeFunction(HWND hWnd, - BITMAP bmDeviceBitmap, - long lAnimationFrame); -\end{verbatim} -Although the second method is commonly used, it is more difficult to maintain (if the name of the function changed, you would need to re-align the parameters). - -\pagebreak -\subsection{Brackets} - -Brackets should be aligned, here's an example of good bracket placement: -\begin{verbatim} - void CGameObject::CleanUp() - { - if(NULL != m_ThisObject) - { - delete m_ThisObject; - } - } -\end{verbatim} -Now we're not out to save vertical lines on the screen; it's about being able to read the code. Therefore, the following style should be avoided: -\begin{verbatim} - void CGameObject::CleanUp() { - if(NULL != m_ThisObject) { - delete m_ThisObject; - } - } -\end{verbatim} - -\section{Commenting} - -Commenting is a subject that is sure to cause debate, but minimal comments with maximum expressiveness are preferable. Bad commenting style is shown below: -\begin{verbatim} - void CGameObject::SetModifiedFlag(bool flag) - { - m_ModifiedFlag = flag; // set the modified flag - } -\end{verbatim} -The above comment does not tell us anything that we don't already know from reading the code; here's a better approach: -\begin{verbatim} - void CGameObject::SetModifiedFlag(bool flag) - { - // This sets the CGameObject's modified - // flag, which is used to determine - // if this object needs to be serialized. - m_ModifiedFlag = flag; - } -\end{verbatim} - -\section{Naming Conventions} - -\subsection{Filenames} - -Filenames can be freely chosen, but to avoid problems on Unix systems, they should not contain spaces or non-ASCII characters. If the file serves to define one class, e.g. \id{CEntity}, the file would usually be called \texttt{Entity.h}. - -\subsection{Namespaces} - -Namespaces are used as a mechanism to express logical grouping. - -\subsubsection{Global Scope} - -Symbols belonging to the global namespace should be prefixed with \id{::}. -Example: The Win32 function \id{::OutputDebugString()} resides in the global namespace and is written with the scope operator preceding the function name. - -\subsection{Classes} - -Classes should use concise, descriptive names that easily convey their use. - -Classes are named using PascalCase - capitalizing each word within the name visually differentiates them. Example: A class named \id{CGameObject} is preferred over \id{gameObject} or \id{cGameObject}. - -\subsection{Functions} - -Functions should use concise, descriptive names that provide innate clues as to the functionality they provide. - -Global and member functions should be named using PascalCase. Example: A function named \id{SetModifiedFlag()} is preferred over \id{SetFlag()} or \id{setFlag}. - -\subsection{Variables} - -Variable should use concise, descriptive names that provide innate clues as to the data that the variable represents. - -Member variables should be prefixed with \id{m\_}, but both \id{m\_camelCase} and \id{m\_PascalCase} may be used according to personal preference (either way, the prefix ensures clarity). Example: \id{m\_GameObject} is more descriptive than \id{gobj}. - -\section{Documentation} - -Each programmer is responsible for properly documenting their code. During code review the code reviewer will ensure that interfaces or APIs are properly documented. - -If the comments are formatted in a certain way, they will automatically be extracted and added to the relevant documentation file. It suffices to write them as follows (sample comment for a class): -\begin{verbatim} - /** - * An object that represents a civilian entity. - * - * (Notes regarding usage and possible problems etc...) - **/ -\end{verbatim} -For single-line comments, \id{///} can be used as well. The comment text is inserted into the documentation, and can additionally be formatted by certain tags (e.g. \id{@param description} for function parameters). For more details, see the CppDoc documentation. - -Each method of a class should be documented as well and here is the suggested method of documenting a member function (continuing with \id{CExample}): -\begin{verbatim} - class CExample - { - public: - CExample(); - ~CExample(): -\end{verbatim} -(continued) -\pagebreak -\begin{verbatim} - /** - * This function does nothing, but is a good example of - * documenting a member function. - * @param dummy A dummy parameter. - **/ - void ShowExample(int dummy); - - private: - intptr_t m_ExampleData; // Holds the value of this example. - double m_FairlyLongVariableName; // Shows the lining up of comments - }; - \end{verbatim} -The ctor and dtor need not be commented --- everyone knows what they are and what they do. \id{ShowExample()}, on the other hand, provides a brief comment as to its purpose. You may also want to provide an example of a method's usage. Member data is commented on the right side and it is generally good (when possible) to line up comments for easier reading. - -\subsection{Author and Modified By} - -To promote collective code ownership and encourage making necessary fixes to modules that happen to be written by others, we will avoid explicitly mentioning the author at the top of the file. Such a tag could (subconsciously) be interpreted as ``his code only'', a condition we want to avoid because ``he'' might get run over by a bus (thus losing the only source of knowledge and expertise on that piece of code). - -On a similar note, we will also avoid modified-by tags. The reasoning is as above, with the additional wrinkle of having to figure out when exactly to consider oneself to have modified the code. Is it after a quick typo fix, adding 2 lines, a function, \ldots? - -Note that the authors of course retain copyright; we can also reconstruct the file history and find out all contributors via SVN revision information. The purpose of this measure is simplicity and improved cooperation and does not deprive anyone of credit. - - -\subsection{Example} - -Here is a sample header file layout, \texttt{Example.h}: -\begin{verbatim} - /** - * ========================================================================= - * File : Example.h - * Project : 0 A.D. - * Description : CExample interface file. - * ========================================================================= - **/ - - /* - This interface is difficult to write as it really - pertains to nothing and serves no purpose other than to - suggest a documentation scheme. - */ - - #ifndef INCLUDED_EXAMPLE - #define INCLUDED_EXAMPLE - - #include "utils.h" - - /** - * CExample - * This serves no purpose other than to - * provide an example of documenting a class. - * Notes regarding usage and possible problems etc... - **/ - class CExample - { - public: - CExample(); - ~CExample(): - - /** - * This function does nothing, but is a good example of - * documenting a member function. - * @param dummy A dummy parameter. - **/ - void ShowExample(int dummy); - - protected: - int m_UsefulForDerivedClasses; - - private: - uint8_t m_ExampleData; // Holds the value of this example. - int m_RatherLongVariableName; // Shows the lining up of comments - }; - - #endif // #ifndef INCLUDED_EXAMPLE -\end{verbatim} -From the above we can see that header guards are utilized. Header file comment blocks show filename, project and author; a short overview follows. - -The order of declarations ought to be: public followed by protected and finally by private. - -\section{Standard Template Library} - -We will make use of the Standard Template Library (STL). Although we may be capable of coding list, maps and queues ourselves and do so more efficiently. Our goal is to create a game not to recreate an existing library. - -Having said that, it may make sense to hide some uses of STL objects behind an interface. This can make the code more readable. - -\section{Singletons} - -Much debate regarding the use of global variables has been generated over the years so we will not re-enter that discussion. The Singleton design pattern does provide many benefits over that of a pure global variable. - -We will make use of the Automatic Singleton Utility as described by Scott Bilas in article 1.3 of the ``Game Programming Gems'', volume I, ``An Automatic Singleton Utility''. - -\section{Strings} - -A string class has been written, \id{CStr}, that should be used instead of directly using \id{std::string} or using C-style strings (i.e. \id{char*}). - -\end{document}