diff options
author | Robert Clarke <clarke.john.robert@gmail.com> | 2023-02-08 19:59:02 +0100 |
---|---|---|
committer | Robert Clarke <clarke.john.robert@gmail.com> | 2023-02-08 19:59:02 +0100 |
commit | 8cef79142f61af13e7ae0a523e958b45f1bd6299 (patch) | |
tree | 9f6653cceaf03b47a1769bed0a7259e5250a7494 /docs/styleguide-cpp.tex | |
parent | 233d8896093cd1fef145c0b8483c50cf6d068721 (diff) |
Beginning of initial draft
Diffstat (limited to 'docs/styleguide-cpp.tex')
-rw-r--r-- | docs/styleguide-cpp.tex | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/docs/styleguide-cpp.tex b/docs/styleguide-cpp.tex new file mode 100644 index 0000000..c606d37 --- /dev/null +++ b/docs/styleguide-cpp.tex @@ -0,0 +1,100 @@ +\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<stdio.h> +#include<iostream> +// 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} |