-
-
Notifications
You must be signed in to change notification settings - Fork 341
[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
usinginstead oftypedef-usingis more readable - Class can have
superalias in its' score only to its' superclass. Otherwise give it a different name - Curly braces after
if,forandwhilemust 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
#includefrom 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
thiswhile accessing member fields and member functions cause it makes reading complicated template code easier - use
std::string &strinstead ofstd::string& strcause&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,whileanddooperators 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
- Use
enum classalways instead of legacy enum -enum classallows making a clearer code