👨‍💻
Software Engineering
Refactoring: Improving the Design of Existing Code
Refactoring: Improving the Design of Existing Code
  • Overview
  • Chapter 2
    • Defining Refactoring
    • Why Should We Refactor?
    • When Should We Refactor?
    • Problems with Refactoring
    • Refactoring, Architecture, and Yagni
    • Refactoring & the Wider Software Development Process
    • Refactoring & Performance
    • Going Further
  • Chapter 3
    • Bad Smells in Code
    • Smell: Mysterious Name
    • Smell: Duplicated Code
    • Smell: Long Function
Powered by GitBook
On this page
  • 🗼 Refactoring Improves the Design of Software
  • 🧠 Refactoring Makes Software Easier to Understand
  • 🪲 Refactoring Helps Find Bugs
  • ⚡Refactoring Helps Program Faster
  1. Chapter 2

Why Should We Refactor?

Refactoring is not a "silver bullet", but a valuable tool.

🗼 Refactoring Improves the Design of Software

  • Without refactoring, the internal design of software tends to decay.

  • Code changes to achieve short term goals, without a full comprehension of the architecture, result in a loss of structure.

  • An important aspect of improving design is to eliminate duplicated code.

    • Poorly designed code takes more code to the same thing, often due to duplication.

    • The more code there is, the harder it is to modify correctly.

🧠 Refactoring Makes Software Easier to Understand

  • We need to think about the next programmer (often ourselves) reading our code.

    • How can we setup the next change so it takes hour(s) instead of days?

  • Refactoring helps make the code more readable.

  • A little time spent on refactoring can make the code better communicate its purpose.

🪲 Refactoring Helps Find Bugs

  • If we refactor code, we work deeply on understanding what it does.

  • Then we put that understanding back in the code.

  • By clarifying the structure of a program, we clarify certain assumptions made such that we often can't avoid spotting bugs.

  • Refactoring makes us more effective at writing robust code.

⚡Refactoring Helps Program Faster

Doesn't the time I spend on refactoring reduce the speed of development?

  • Refactoring helps us develop code more quickly. This can be counterintuitive.

  • Internal quality of software is the difference between features that can be delivered quickly vs those that take a long time.

  • Modularity allows us to understand a small subset of the code base to make a change.

  • Clear code makes it less likely to introduce a bug.

  • Design Stamina Hypothesis: By putting effort into good internal design, we increase stamina of the software effort, allowing us to go faster for longer.

  • Good design is difficult to do up front. Refactoring is vital to improving design over time, even as the needs of the program change.

PreviousDefining RefactoringNextWhen Should We Refactor?

Last updated 11 months ago

bliki: DesignStaminaHypothesismartinfowler.com
Logo