Clean C++ : Sustainable Software Development Patterns and Best Practices with C++ 17 (2017)