-
Improvement
-
Resolution: Fixed
-
Major
-
None
-
None
-
None
- ujednolicenie initializer lists
- proponowany styl:
SomeClass::SomeClass() : m_varA{0} , m_varB{1} { }
- proponowany styl:
- pozbycie się maksymalnej ilości bezpośrednich wywołań `new`; główny zamiennik: std::make_shared
- niestety w C++ 11 przeoczono std::make_unique; można dołączyć własny na podstawie propozycji do C++14: https://isocpp.org/files/papers/N3656.txt
- pozbycie się niepotrzebnych shared_ptr: zamiast niektórych z nich wystarczy nam obiekt na stosie, ewentualnie unique_ptr
- zamiana define na constexpr, const
- bonus: przedefiniowanie niektórych funkcji pomocniczych jako constexpr
- zamiana AutoLock przez std::mutex itd., zamiana ReadWriteLock przez boost::shared_mutex itd.
- upewnienie się, że funkcje mają odpowiedni typ locka
- zebranie plików .cc związanych z eventami do jednego katalogu: src/events
- przeglądnięcie zmiennych zdefiniowanych z modyfikatorem volatile
- chcemy usunąć volatile lub zastąpić je przez std::atomic
- zmiana `typedef type alias` na `using alias = type` (c++11 consistency)
- kolejność deklaracji public, protected, private w klasach
- proponowne:
public: protected: private:
- proponowne:
- zastosowanie modyfikatora `override` tam gdzie można - bardzo przydatne dla mocków i proxy w testach
- std::move w odpowiednich miejscach przy zwracaniu typów przez wartość
- inne poprawki które wyjdą przy okazji w miarę sił i chęci (np. uniform initialization, range-based for loop, auto, const, emplace, etc.)
do rozważenia: (soft-)ban na `using namespace`
- mniej radykalne rozwiązanie:
using std::make_shared; using std::shared_ptr; shared_ptr<A> a = make_shared<A>();
- bardziej radykalne rozwiązanie (+1):
std::shared_ptr<A> a = std::make_shared<A>();