neogfx C++ Coding Style Guide

1. Naming Conventions

Artefact Convention
Function name foo_bar_baz
Class name foo_bar_baz
Object/variable name fooBarBaz
prefixFooBarBaz
Prefix Meaning
none Local object/variable
a Function argument
i Class member ("instance") object/variable
s Static object/variable
k Constant
Enumeration name foo_bar_baz_e
Enumerator name FooBarBaz
Template parameter FooBarBaz
Macro FOO_BAR_BAZ

1.1 Examples

#include <iostream>
#include <string>
#include <vector>

enum grade_e
{
	A, B, C, D, E, F
};

class student
{
private:
	typedef std::vector<grade_e> grades;
public:
	student(const std::string& aName) : iName(aName) {}
public:
	const std::string& name() const { return iName; }
	void add_grade(grade_e aGrade)
	{
		iGrades.push_back(aGrade);
	}
	grade_e average_grade() const
	{
		if (iGrades.empty())
			return F;
		int total = 0;
		for (grades::const_iterator i = iGrades.begin(); i != iGrades.end(); ++i)
			total += *i;
		return static_cast<grade_e>(total / iGrades.size());
	}
private:
	const std::string iName;
	grades iGrades;
};

int main()
{
	student s("Mr Flibble");
	s.add_grade(A);
	s.add_grade(B);
	s.add_grade(C);
	s.add_grade(D);
	s.add_grade(E);
	std::cout << s.name() << "'s average grade is " << static_cast<char>(s.average_grade() + 'A') << std::endl;
}

Back to home page