\documentclass{article} \usepackage[colorlinks = true, urlcolor = blue, linkcolor = blue]{hyperref} \usepackage{multirow} %Setup for code snippets \usepackage{listings} \usepackage{xcolor} \definecolor{darkGreen}{RGB}{63,127,95} \lstset { language=C++, backgroundcolor=\color{black!3}, basicstyle=\footnotesize, basicstyle=\ttfamily, keywordstyle=\color{blue}\ttfamily, stringstyle=\color{red}\ttfamily, commentstyle=\color{darkGreen}\ttfamily, morecomment=[l][\color{magenta}]{\#} } \usepackage{helvet} \renewcommand{\rmdefault}{\sfdefault} %Use sans-serif font family \title{OpenVic2 C++ Style Guidelines (Draft)} \author{ZincLadder} \date{\today\\v0.0.1} \begin{document} %===================================== \maketitle \tableofcontents \clearpage \section{Why Style?} You may be wondering "Why do we need a style guide?" "Are you trying to give me homework?" \subsection{General Principles} \begin{itemize} \item Prefer clarity over brevity \item Don't optimize prematurely \item Avoid C-style casts \end{itemize} \subsection{File Formatting} Source code files should adhere to the following: \begin{itemize} \item Encoded in UTF-8 \item Use tabs for indentation \item Use LF for end-of-line sequences \item Not have any trailing whitespace (Lines which end in spaces or tabs) \item Any \#include directives should be at the top of the file \end{itemize} \section{Conventions} \subsection{Naming Conventions} \begin{table}[!ht] \begin{center} \caption{Basic Naming Conventions} \begin{tabular}{|l|l|l|} \hline \bf Item & \bf Writing Convention & \bf Example \\ \hline Class and Struct Names & PascalCase & MyCoolExample \\ Variables and Function Names & CamelCase & myCoolExample \\ Constants, Enum Values, and Preprocessor & SnakeCase (all-caps) & MY\_COOL\_EXAMPLE \\ Type aliases & SnakeCase (lower) & my\_cool\_example\_t \\ \hline \end{tabular} \end{center} \end{table} \begin{lstlisting} #pragma once #include #include // A comment constexpr size_t UNIQUE_RGB_COLOURS = 256 * 256 * 256; struct RGBColour { unsigned char r; unsigned char g; unsigned char b; }; bool isColourGreyscale(RGBColour c); class Something { }; \end{lstlisting} %===================================== \end{document}