-
-
Notifications
You must be signed in to change notification settings - Fork 323
[Draft] Code style
Yevgeniy Zakharov edited this page May 19, 2019
·
22 revisions
This is a very beginning of defining a code style of the lib
- Use
using
instead oftypedef
-using
is more readable - Class can have
super
alias in its' score only to its' superclass. Otherwise give it a different name - Curly braces after
if
,for
andwhile
must be put on the same line not on the next one - same code less lines - All classes/structs are named with lowercase with underscore just like std's ones - one of
sqlite_orm
's goals is to look like it is a part of stdlib:storage_t
,table_type
,statement_binder
- private variables are named with camelcase:
needQuotes
,compositeKeyColumnNames
- public functions are named just like classes:
begin
,make_table
,bind
- every
#include
from stdlib must have a list of functions/classes from it which are used in a current source file. These lists must be actual to keep includes in actual state and remove excess once they are not required:#include <string> // std::string
,#include <cstddef> // std::nullptr_t
,#include <algorithm> // std::find_if
- don't write constructors which can be replaced with initializer list constructors - less code -> same result
- don't make member field private/protected with single lined getter/setter - make a public field instead. Once you need logic in setter or getter - then make a refactoring, move to private/protected and add getter and setter. Least of getters and setters require logic but single field logic increases code from one line to seven:
public:
int myField = 0;
vs
private:
int myField = 0;
public:
int getMyField() const {
return this->myField;
}
void setMyField(int value) {
this->myField = value;
}
- always use
this
while accessing member fields and member functions cause it makes reading complicated template code easier - use
std::string &str
instead ofstd::string& str
cause&
and*
are not a part of a type:
int* a, b;
doesn't declare two pointers but one pointer and one int
.
Same for return type of functions
- Place curly braces always after
if
,for
,while
anddo
operators even if body contains one line - someone may add line after you and forget to place curly braces and you'll get incorrect behavior which probably compiles well - Avoid using C macros - macros make compilation complicated especially when the project is large and has a lot of third party libs