Book description
Good software design is essential for the success of your project, but designing software is hard to do. You need to have a deep understanding of the consequences of design decisions and a good overview of available design alternatives. With this book, experienced C++ developers will get a thorough, practical, and unparalleled overview of software design with this modern language.
C++ trainer and consultant Klaus Iglberger explains how you can manage dependencies and abstractions, improve changeability and extensibility of software entities, and apply and implement modern design patterns to help you take advantage of today's possibilities. Software design is the most essential aspect of a software project because it impacts the software's most important properties: maintainability, changeability, and extensibility.
- Learn how to evaluate your code with respect to software design
- Understand what software design is, including design goals such as changeability and extensibility
- Explore the advantages and disadvantages of each design approach
- Learn how design patterns help solve problems and express intent
- Choose the right form of a design pattern to get the most out of its advantages
Publisher resources
Table of contents
- Preface
- 1. The Art of Software Design
-
2. The Art of Building Abstractions
- Guideline 6: Adhere to the Expected Behavior of Abstractions
- Guideline 7: Understand the Similarities Between Base Classes and Concepts
- Guideline 8: Understand the Semantic Requirements of Overload Sets
- Guideline 9: Pay Attention to the Ownership of Abstractions
- Guideline 10: Consider Creating an Architectural Document
- 3. The Purpose of Design Patterns
- 4. The Visitor Design Pattern
-
5. The Strategy and Command
Design Patterns
- Guideline 19: Use Strategy to Isolate How Things Are Done
- Guideline 20: Favor Composition over Inheritance
- Guideline 21: Use Command to Isolate What Things Are Done
- Guideline 22: Prefer Value Semantics over Reference Semantics
- Guideline 23: Prefer a Value-Based Implementation of Strategy and Command
- 6. The Adapter, Observer, and CRTP Design Patterns
- 7. The Bridge, Prototype, and External Polymorphism Design Patterns
-
8. The Type Erasure Design Pattern
-
Guideline 32: Consider Replacing Inheritance Hierarchies with Type Erasure
- The History of Type Erasure
- The Type Erasure Design Pattern Explained
- An Owning Type Erasure Implementation
- Analyzing the Shortcomings of the Type Erasure Design Pattern
- Comparing Two Type Erasure Wrappers
- Interface Segregation of Type Erasure Wrappers
- Performance Benchmarks
- A Word About Terminology
- Guideline 33: Be Aware of the Optimization Potential of Type Erasure
- Guideline 34: Be Aware of the Setup Costs of Owning Type Erasure Wrappers
-
Guideline 32: Consider Replacing Inheritance Hierarchies with Type Erasure
- 9. The Decorator Design Pattern
- 10. The Singleton Pattern
- 11. The Last Guideline
- Index
- About the Author
Product information
- Title: C++ Software Design
- Author(s):
- Release date: September 2022
- Publisher(s): O'Reilly Media, Inc.
- ISBN: 9781098113162
You might also like
book
Software Architecture with C++
Apply business requirements to IT infrastructure and deliver a high-quality product by understanding architectures such as …
book
C++ Templates: The Complete Guide, 2nd Edition
Templates are among the most powerful features of C++, but they remain misunderstood and underutilized, even …
book
Modern C++ Programming with Test-Driven Development
If you program in C++ you've been neglected. Test-driven development (TDD) is a modern software development …
book
Effective Modern C++
Coming to grips with C++11 and C++14 is more than a matter of familiarizing yourself with …