Overview
This course path teaches developers to enhance challenging codebases with safe, incremental changes. It covers dependency breaking, refactoring, and characterization testing to modernize existing systems while maintaining functionality.
Syllabus
- Course 1: Increasing Code Test Coverage in C++
- Course 2: Breaking Dependencies to Improve Code
- Course 3: Using Seams to Enable Testability and Expand Capabilities
- Course 4: Using Sprout and Wrap Techniques
Courses
-
This course explores how to improve code test coverage and foster a more testable codebase. Increasing code test coverage is essential for ensuring confidence in modifying existing systems. It allows developers to make changes with minimal risk of introducing bugs by providing a safety net of tests that document existing and desired behaviors.
-
Breaking dependencies is crucial in existing systems to make them more testable, maintainable, and extensible. By reducing coupling and isolating functionality, developers can introduce changes incrementally while minimizing risks. In this course, we focus on removing coupling with interfaces and dependency injection techniques for testability.
-
Seams are strategic points in code where behavior can be modified without altering the existing implementation. They are crucial for introducing changes safely, enabling testing, and refactoring legacy systems incrementally. This course explores functional, object, and preprocessor seams, and their role in improving code maintainability.
-
Sprout techniques involve creating new methods or classes to encapsulate additional functionality or refactored behavior. These techniques help to safely introduce changes while preserving existing behavior, minimizing risks, and improving testability. In this course we will use sprout techniques with methods and objects to refactor or expand capabilities.