Coding Style - Unarelith/OpenMiner GitHub Wiki

Naming

Variables and functions use camelCase.

Class names and file names use PascalCase.

Class private members must be prefixed by a m_.

Static private members should be prefixed by a s_.

The prefix is should be used for boolean variables and methods (ex: isSet, isFinished, isVisible, isFound, isOpen).

There are a few alternatives to the is prefix that fit better in some situations. These are the has, can and should prefixes (ex: hasLicense, canEvaluate, shouldSort).

Usually, a variable that will store an amount of items will be named itemCount and not nItems.

Pointer and references

Only use a pointer when needed, always prefer using references.

The &/* should be placed before the name of the variable.

Examples:

  • const Item &item: valid
  • Biome *biome: valid
  • Recipe* recipe: invalid

If an object is bigger than 64 bits, always pass it using a const reference, never pass it by copy.

Examples:

  • void setItems(const std::vector<Item> &items);: valid
  • void setItems(std::vector<Item> items);: invalid

Indentation

In OpenMiner, we use tabs for indentation, and spaces for alignment.

Example:

....foo(bar1,
....____bar2);

Here, the . represents tabs and _ represents spaces.

Line length

There's currently no hard limit on line length, but try to keep the length below 100 chars when possible.

Operators

Every operator (+, -, *, /, &/&&, |/||, ^) should be preceded and followed by a space.

Example:

  • 5 * (3 + 2): valid
  • 5*(3+2): invalid

Class definition

Here an example of class declaration:

class Foo : public Bar {
	public:
		Foo();

	private:
		int m_baz = 0;
};

Function definitions

Here is an example of function definition:

int add(int a, int b) {
	return a + b;
}

Conditional statements

Here is an example of a if/else if/else statement:

if (condition && otherCondition) {
	// do something
}
else if (condition && !otherCondition) {
	// do something else
}
else {
	// do something else 2
}

Loops

Here is an example for different types of loops:

while (condition) {
	// do something
}

do {
	// do something
} while (condition);

for (int i = 0 ; i < max ; ++i) {
	// do something
}

for (auto &it : vector) {
	// do something
}
⚠️ **GitHub.com Fallback** ⚠️