diff --git a/03-Style.md b/03-Style.md index 182d58f..7cc0b7b 100644 --- a/03-Style.md +++ b/03-Style.md @@ -139,8 +139,8 @@ Header files must contain a distinctly-named include guard to avoid problems wit #define MYPROJECT_MYCLASS_HPP namespace MyProject { -class MyClass { -}; + class MyClass { + }; } #endif @@ -274,7 +274,7 @@ There is almost never a reason to declare an identifier in the global namespaces ## Use the Correct Integer Type For stdlib Features -The standard library generally returns `size_t` for anything related to size. What exactly `size_t` is is implementation defined. +The standard library generally returns `size_t` for anything related to size. What exactly `size_t` is, is implementation defined. In general, using `auto` will avoid most of these issues, but not all. @@ -312,10 +312,10 @@ However, you can easily create unreadable expressions using too much or wrong op More detailed, you should keep these things in mind: -* Overloading `operator=` when handling with resources is a must, see "Consider the Rule of Zero" below. +* Overloading `operator=` when handling with resources is a must, see [Consider the Rule of Zero](03-Style.md#consider-the-rule-of-zero) below. * For all other operators, only overload them when they are used in a context that is commonly connected to these operators. Typical scenarios are concatenating things with +, negating expressions that can be considered "true" or "false", etc. * Always be aware of the [operator precedence](http://en.cppreference.com/w/cpp/language/operator_precedence) and try to circumvent unintuitive constructs. -* Do not overload exotic operators such as ~ or %. +* Do not overload exotic operators such as ~ or %. * [Never](http://stackoverflow.com/questions/5602112/when-to-overload-the-comma-operator?answertab=votes#tab-top) overload `operator ,` (the comma operator). * Use `operator >>` and `operator <<` when dealing with streams. For example, you can overload `operator <<(std::ostream &, MyClass const &)` to enable "writing" you class into a stream, such as std::cout or an std::fstream or std::stringstream. The latter is often used to create a textual representation of a value. * There are more common operators to overload [described here](http://stackoverflow.com/questions/4421706/operator-overloading?answertab=votes#tab-top) @@ -332,7 +332,7 @@ Instead mark single parameter constructors as `explicit`, which requires them to ### Conversion Operators -Similarly to single parameter constructors, conversion operators can be called by the compiler and introduce unexpected overhead. The should also be marked as `explicit`. +Similarly to single parameter constructors, conversion operators can be called by the compiler and introduce unexpected overhead. They should also be marked as `explicit`. ## Consider the Rule of Zero diff --git a/04-Considering_Safety.md b/04-Considering_Safety.md index 38f1605..8ca1849 100644 --- a/04-Considering_Safety.md +++ b/04-Considering_Safety.md @@ -21,7 +21,7 @@ public: private: std::string m_value; -} +}; // Good Idea @@ -40,7 +40,7 @@ public: private: std::string m_value; -} +}; ``` ### Consider Return By Value for Mutable Data, `const &` for Immutable @@ -68,7 +68,6 @@ auto mybuffer = std::make_unique(length); // C++14 auto mybuffer = std::unique_ptr(new char[length]); // C++11 // or for reference counted objects - auto myobj = std::make_shared(); // ... @@ -88,7 +87,7 @@ Exceptions cannot be ignored. Return values, such as using `boost::optional`, ca Stroustrup, the original designer of C++, [makes this point](http://www.stroustrup.com/bs_faq2.html#exceptions-why) much better than I ever could. ## Use C++-style cast instead of C-style cast -Use the C++-style cast(static\_cast<>, dynamic\_cast<> ...) instead of the C-style cast. The C++-style cast allows more compiler checks and is considerable safer. +Use the C++-style cast (static\_cast<>, dynamic\_cast<> ...) instead of the C-style cast. The C++-style cast allows more compiler checks and is considerable safer. ```cpp // Bad Idea @@ -98,7 +97,7 @@ int i = (int) x; // Good Idea int i = static_cast(x); ``` -Additionaly the C++ cast style is more visible and has the possiblity to search for. +Additionally the C++ cast style is more visible and has the possibility to search for. ## Additional Resources diff --git a/05-Considering_Maintainability.md b/05-Considering_Maintainability.md index c5bf3e4..f390ac5 100644 --- a/05-Considering_Maintainability.md +++ b/05-Considering_Maintainability.md @@ -17,7 +17,7 @@ namespace my_project { // static const double 3.14159 = 3.14159; // which leads to a compile-time error. Sometimes such errors are hard to understand. static const double PI = 3.14159; - } + }; } ``` diff --git a/07-Considering_Threadability.md b/07-Considering_Threadability.md index 663d138..a6b9f34 100644 --- a/07-Considering_Threadability.md +++ b/07-Considering_Threadability.md @@ -14,7 +14,7 @@ Besides being global data, statics are not always constructed and deconstructed ### Singletons -A singleton is often implemented with a static and/or `shared_ptr` +A singleton is often implemented with a static and/or `shared_ptr`. ## Avoid Heap Operations diff --git a/10-Further_Reading.md b/10-Further_Reading.md index e71f83b..2e76e39 100644 --- a/10-Further_Reading.md +++ b/10-Further_Reading.md @@ -8,4 +8,4 @@ * https://svn.boost.org/trac/boost/wiki/BestPracticeHandbook - Best Practice Handbook from Nial Douglas * http://sourceforge.net/apps/mediawiki/cppcheck/index.php?title=ListOfChecks * http://emptycrate.com/ - * http://stackoverflow.com/questions/tagged/c%2b%2b-faq?sort=votes&pageSize=15 StackOverflow C++ FAQ + * http://stackoverflow.com/questions/tagged/c%2b%2b-faq?sort=votes&pageSize=15 - StackOverflow C++ FAQ