SERIOUS Refactoring Handbook
This book is structured around refactoring scenarios that are deployed and
elaborated upon in individual book chapters. One or more patterns de-
scribe the steps to a generalized solution for the stated scenario goal. The
scenarios that are discussed in the book are:
- Reducing Accidental Complexity. This chapter is about source code components that have been growing in complexity over time up to a point
where such a component can no longer be grasped as a whole by a
- Refactoring State Machines. State machines are a well known mechanism
to model a system. The patterns in this chapter help the reengineer
to detect, reverse engineer and refactor a degraded state machine
implementation to an explicit and extensible form.
- Refactoring for Performance. The decomposition of a software system impacts quality attributes such as memory consumption and start-up time. This chapter enlists a pattern about refactoring a system's suboptimal data layout (termed Redundant Objectification).
- Testing a Legacy System. Introducing automated tests for an existing system may be challenging due to missing test interfaces, high coupling,
centralized complexity etc. The patterns in this chapter offer solutions
to write efficient input/output tests, to incrementally refine integration tests to
Ūner grained tests, etc. Fur thermore, patterns that help in estimating
refactoring test effor t and in test case reuse quantify and reduce the
overhead of automated tests.
- Architecture Level Restructurings. This chapter provides patterns to recover
the structure of an application and study migration paths. Moreover,
this chapter enlists patterns to migrate to new technology or to extract
a component from a system.