Jump to content

Elements of Programming Style -- The C++ Style Guide

class space brace method comments open name file files
This is a well-written guide to what the author considers good C++ coding style.

4: Adsense


Header files have a ".h" suffix. Header file contains class, struct, and union declarations, enum declarations, #defines, typedefs.

Implementation files have a ".cc" (UNIX) or ".cpp" (Windows, DOS) suffix. Implementation files contain function and method implementations.

Make a header block in header files and source code files. The header should contain title, author, date, and project information as well as a simple description of how the file fits into the project.

Names of Things

Names of Common C++ Characters

<table align="center" border="1" width="80%"><tbody><tr><td width="10"><font size="2" face="verdana">{</font></td><td width="100"><font size="2" face="verdana">open brace, open curly</font></td></tr><tr><td><font size="2" face="verdana">}</font></td><td><font size="2" face="verdana">close brace, close curly</font></td></tr><tr><td><font size="2" face="verdana">(</font></td><td><font size="2" face="verdana">open parenthesis, open paren</font></td></tr><tr><td><font size="2" face="verdana">)</font></td><td><font size="2" face="verdana">close parenthesis, close paren</font></td></tr><tr><td><font size="2" face="verdana">[</font></td><td><font size="2" face="verdana">open bracket</font></td></tr><tr><td><font size="2" face="verdana">]</font></td><td><font size="2" face="verdana">close bracket</font></td></tr><tr><td><font size="2" face="verdana">.</font></td><td><font size="2" face="verdana">period, dot</font></td></tr><tr><td><font size="2" face="verdana">!</font></td><td><font size="2" face="verdana">exclamation point, bang, not</font></td></tr><tr><td><font size="2" face="verdana">|</font></td><td><font size="2" face="verdana">bar, vertical-bar, or, or-bar (actually a "vertical virgule")</font></td></tr><tr><td><font size="2" face="verdana">&amp;</font></td><td><font size="2" face="verdana">ampersand, and, reference, ref</font></td></tr><tr><td><font size="2" face="verdana">*</font></td><td><font size="2" face="verdana">asterisk, multiply, star, pointer</font></td></tr><tr><td><font size="2" face="verdana">/</font></td><td><font size="2" face="verdana">slash, divide</font></td></tr><tr><td><font size="2" face="verdana">//</font></td><td><font size="2" face="verdana">slash-slash, comment</font></td></tr><tr><td><font size="2" face="verdana">#</font></td><td><font size="2" face="verdana">pound</font></td></tr><tr><td><font size="2" face="verdana">\</font></td><td><font size="2" face="verdana">backslash, (sometimes "escape")</font></td></tr><tr><td><font size="2" face="verdana">~</font></td><td><font size="2" face="verdana">tilde</font></td></tr></tbody></table>

Names and Indentation

Names of Naming Conventions
  • interspersed_underscores
  • lowercaseMixedCapital
  • CapitalMixedCapital
Applications of Naming Conventions
  • enumeration_item_name
  • variableName
  • TypeName, ClassName, MethodName()
  • UnixFileName.cc
  • dosfn.cpp
Self-documenting Code
  • Use long names for every name in your program.
No Magic Numbers
  • Numeric constants besides 0 (and sometimes 1) are not allowed. Use constants or #defines.
  • Space (what you get when you press spacebar)
  • Newline (what you get when you press enter)
  • Tab (substitutes for 8 spaces)
Space and Indentation
  • After an open brace, indent every subsequent line four spaces until the matching close brace.
  • If an if, while, or for has no brace following, indent the next line two spaces.
  • Indent lines which end in a colon backward two spaces (public, case).
  • A space precedes and follows reserved words (if, else, class, struct) unless preceded or followed by indentation or newlines or special punctuation.
  • A space precedes and follows operators and comparators (except unary operator bang is not followed by a space).
  • Pointer variants (ampersand, star) are preceded and followed by space in declarations.
  • Pointer variants (ampersand, star) are preceded (but not followed) by a space in expressions.
  • A space follows an open parenthesis.
  • Newline precedes an open brace in the following: class, struct, union, enum, method, function (but not: if, else, do, for, while, switch --- these braces are preceded by a single space.)
  • Newline follows a close brace for method, function, if, else, do, for, while, switch.
  • Semi-colon, then newline, then blank line after close brace for class, struct, union.
  • Newline follows an open brace.
  • Comments always begin at current indentation level with "//" and a space.
  • No other construct may appear on the same line as a comment.
  • Comments always preceed the construct they address.
  • Use complete sentences in a comment.
  • When describing a statement, comments may be in the imperative.
Above all, be guided by what pleases the eye. Be guided by what makes your code MORE READABLE.

Header File Example

//  MODULE NAME: ClassName.h
//  	PROJECT: CS1344-1,2 Course Notes
//   	AUTHOR: Neill Kipp
//     	DATE: January 1, 1996
//  DESCRIPTION: This file presents examples of naming and 
//  indentation style in a C++ class declaration.  This title
//  information is minimal.

// The following prevents files from being included
// twice.  It is a naming exception designed to emulate a file name
// (period is not a name character; underscore is).
#ifndef ClassName_h
#define ClassName_h

// This directive includes the superclass declaration.
#include "super.h"

// This directive includes another class declaration.
#include "other.h"

// The comment for an enumeration declaration precedes the declaration.
enum OverflowState
	// Each item's comment precedes it at the same indentation as the item.
	// Follow the last item with a comma;
	// it helps avoid syntax errors when adding or rearranging items.

// This class shows how naming conventions and comments are used in a
// simple class declaration.  Whitespace precedes and follows reserved
// words (like "public").

class ClassName
	// After a brace, indent four spaces.
	// The description of the variable "memberData" goes here.
	int memberData;

	// If a line ends in single colon, reverse-indent two spaces.

	// The constructor gives initial values to member data.

	// The destructor guarantees clean deallocation.
	// The tilde (~) is part of the method name.  It is not an operator.

	// This method increments the member variable by the value in "howMuch" 
	// and returns TRUE if overflow is detected (FALSE otherwise).  Method 
	// comments tell what the method does, what the arguments are,
	// and what the method returns.
	OverflowState IncrementMemberVariable( int howMuch);
	// Prints message about overflow.
	void ShowOverflow( OverflowState overflow);


Source code file example

//  MODULE NAME: ClassName.cc
//  	PROJECT: CS1344-1,2 Course Notes
//   	AUTHOR: Neill Kipp
//     	DATE: January 1, 1996
//  DESCRIPTION: This file presents examples of naming and 
//  indentation style in a C++ class implementation.  This title
//  information is minimal.

// This directive includes header information for the "ClassName" class.
#include "ClassName.h"

	// Initialize member data (statement comments are in the imperative,
	// and preceed the statement).  Suggestion: write the comments first, then
	// write the code.
	memberData = 0;

// The return type appears on the first line,
// followed by the class name colon-colon on the second,
// and finally the method name on the last.  Then a newline, an open brace
// and then indent.  Notice the space after the open parenthesis.  It helps
// the eye catch the type name.
IncrementMemberVariable( int howMuch)
	// Check the overflow condition.
	if ( TOO_BIG - memberVariable > howMuch) {
    // If overflow, return that overflow occurred.
    return overflow_occurred;
	} else {
    // Otherwise, return overflow is ok.
    return overflow_none;

// This code implements the ShowOverflow method.
ShowOverflow( OverflowState overflow)
	// Switch is a reserved word.  It is followed by a space.
	switch ( overflow) {

    // Lines ending in a colon reverse indent two spaces.
  	case no_overflow:
    // Display message about no overflow.
    cout << "No overflow occurred.\n";

  	case overflow_occurred:
    // Display message that overflow occurred.
    cout << "Warning: overflow occurred.\n";

Other examples

// Note the spacing and indentation in the for statement.
for ( whichItem = 0; whichItem < BIG_NUMBER; whichItem++) {
	DoSomething( whichItem);

// Bang is not followed by a space.
while ( !SemaphoreOK()) {
	DoWaitForSemaphore( LONG_TIME);


Aug 07 2013 09:05 AM

regarding lowercaseMixedCapital and CapitalMixedCapital, there's already a name for them:


CamelCase (I guess because of the O'Camel language)


Regarding self documenting code, there are only 2 rules

- write code that is easy to understand what it do

- comment only when needed



I'll avoid to "use long names". first of all "USE RIGHT NAMES": some names will be long, some others will be short. If possible never use defines (neither for constants!, maybe a static member variable is better scoped ?). Defines should do only pre-compiler magic. (import export macro, header guards.. if you start using defines for different stuff consider some alternative way to solve your problem.. if possible).


Also I tend to move all "copyright/author" stuff at the end of files. When I want to program I usually want to see immediatly the class, not who did it. If later the class have some trouble then I'll look who did it.

Feb 29 2016 06:47 PM

اعمال شركة كشف تسربات المياه بالرياض الان اسهل واسرع مع شركة الافضل لخدمات المنزل باستخدام التقنيات الحديثة والمتطورة واستخدام معدات ذكية جدا لمعرفة مكان الخلل والعطب والاهم من ذلك كشف تسربات المياه بدون تكسير والاستغناء عن الطرق التقليدية القديمة التي تحتاج الي مجهود زائد و تكاليف اكثر وترتكز اكثر علي مختصين كشف تسريبات الماء .

شركة تنظيف فلل بالدمام - تسليك المجاري بالدمام - افضل شركة تنظيف بجدة

شركة نظافة بالرياض لديهم معدات التنظيف اليدوية التي لاغني عنها بالاضافة الي المعدات الحديثة من ( تنظيف منازل – تنظيف خزانات – ماكينات غسيل المجالس والكنب – ماكينات شفط الغبار او المياه – ماكينات التنظيف بالبخار – ماكينات ضغط المياه و تظنيف الواجهات الحجر و الزجاج – ماكينات شفط المياه لسحب المياه عند تنظيف الخزانات او تنظيف المسابح .

شركة نقل عفش اصبح امرا لا يمكن الاستغناء عنة نتيجة الاجواء المحيطة وكثرة التنقل سواء داخل مدينة الرياض أو خارجها لظروف العمل او انتهاء مدة الايجار لمنزلك او نتيجة البحث عن محلات شراء الاثاث المستعمل بالرياض وللشركات في حالات نقل المكاتب من موقع الي موقع جديد فيحتاج شركة نقل اثاث مختص للقيام بعمليات نقل المكاتب واعادة تركيبها و خدمات التغليف للمحافظة علي الاثاث خلال عملية النقل .

شركة رش مبيدات - شركة مكافحة النمل الابيض بالرياض - شركة كشف تسربات بالدمام

  • توكد الشركة علي المسئولين عن عمليات الرش اتباع الارشادات الصحية والعلمية في عمليات الرش و المكافحة و تجنب الاخطار المتوقع حدوثها ولبس الكمامات الواقية وابعاد الاطفال قدر المستطاع و اغلاق المكان الذي تم به عملية الرش لمدة لا تقل عن 3 ساعات بدون اضاءة او تهوية .

لدينا شركة تخزين اثاث مستودعات تخزين الاثاث بالرياض بالتعاقدات السنوية والشهرية وفق عقود مبرمة بين العميل والشركة ويسجل فيها البيانات بشكل كامل و الاغراض وعدها بعد تغليف الاثاث بالكامل و تحديد المدة التي سيتم التخزين فيها و بيانات العميل و طريقة الدفع ويتسلم العميل نسخة من العقد و تظل نسخة اخري مع تخزين عفش .

مكافحة حشرات بالرياض - شركة مكافحة الحشرات بالدمام  - مكافحة الحشرات بجدة

/ sraaeladaweysamir
May 26 2016 05:02 PM

خدمات نقل الاثاث بالرياض تعتبر الاصعب على من لا يجهل العلم بها الى جانب استخدام فنيين فك وتركيب الاثاث لا يتمتعون بالخبرة فى فك وتركيب الاثاث المنزلى لذلك وفرنا افضل مستودعات لحفظ الاثاث بالرياض التى تعتبر الافضل فى تغليف الاثاث المنزلى فلدينا افضل محلات شراء اثاث مستعمل بالرياض التى تمتلك الخبرة فى بيع وشراء الاثاث المنزلى الى جانب القدرة على التخلص من مشاكل كشف تسربات المياه بالرياض حيث القدرة على اكتشاف وعالجة العطل الى جانب خدمات عزل خزانات بالرياض التى تمتلك القدرة على التخلص من الشقوق الموجودة بالخزان الى جانب قدرتنا العالية على عزل خزانات بجازان فلا تتردد بالاتصال بنا من خلال شركة تنظيف بالرياض عماله فلبينية التى تعتبر الافضل فى العمل فالعمالة الفلبينية تتمتع بافضل شركة تنظيف بجدة عمالة فلبينية فيا عزيز العميل حاول التواصل مع شركة نقل اثاث بالدمام التى تتمتع بافضل الهرة فى فك وتركيب ونقل الاثاث المنزلى ولدينا شركة نقل عفش خارج جدة كل هذه الخدمات تقدم لكم من خلال شركة نقل اثاث بجازان - شركة نقل اثاث بالقصيم - شركة تنظيف بالباحه

Note: GameDev.net moderates article comments.