SERIOUS Refactoring Handbook

This book is structured around refactoring scenarios that are deployed and elaborated upon in individual book chapters. One or more patterns describe 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 human.
  • 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.


PDF, 120 pages.