One Defect, Two Fixes

Posted February 18, 2020 by Joshua Kerievsky in Continuous Delivery, Extreme Programming, Mob Programming, Refactoring, Software Design, Test Driven Development

In A Tale of Two TDDers, I quickly documented what I see as two different defect-fixing behaviors of Test-Driven Development practitioners. I spent all of about ten minutes writing that blog. It generated a lot of interesting discussion, some of which bordered on deep misunderstanding. More detail would have helped. And so I dug through […]
Read more

No comments

Reasons for Extracting Methods

Posted October 12, 2017 by Tim Ottinger in Extreme Programming, Refactoring, Software Design

When we are refactoring, and especially when we are teaching refactoring, our partners are surprised to see us extracting methods which are only (currently) called once. There is often an assumption that the only reason for extracting a method is so that you can call it from multiple places in the code base.</p> While this […]
Read more

No comments

Harmony and Identity: Generalizing Code

Posted July 21, 2016 by Bill Wake in Refactoring

Do you find yourself creating code for similar methods or classes, and feel like it shouldn’t be so hard? You may be able to Harmonize Code and Introduce Identity Elements to make methods and classes melt away.
Read more


The Swap Statement Refactoring

Posted July 7, 2016 by Bill Wake in Refactoring

When we wish statements were in a different order, the Swap Statement refactoring sometimes lets us swap them.
Read more

No comments

The Nested-If Swap Refactoring

Posted June 22, 2016 by Bill Wake in Refactoring

You sometimes would prefer that two nested if statements were in the opposite order. The Nested-If Swap lets you change that order—under certain circumstances.
Read more


Isolate-Improve-Inline: The 3-I Refactoring Tactic

Posted May 5, 2016 by Bill Wake in Refactoring

I often find myself using a particular multiple-step refactoring pattern that I call 3-I (or III): Isolate-Improve-Inline.
Read more


Refactoring – Prepare, Improve, and Clean

Posted January 8, 2016 by Bryan Beecham in Learning, Refactoring, Software Design, Test Driven Development

Refactoring is at the heart of the way we improve code. We make changes to the code for the purpose of making it easier to understand and easier to modify while maintaining the same behaviour.
Read more

1 comment

Modern Agile

Posted November 3, 2015 by Joshua Kerievsky in Agile Transition, Anzen, Anzeneering, Culture, Estimates, Extreme Programming, Kanban, Lean Startup, Mob Programming, Modern Agile, Refactoring, Software Design, Tech Safety, Test Driven Development

Have you ever seen someone using an older laptop and just felt bad for them? That’s how I feel when I see most people practicing agile these days. We’ve advanced so far beyond where agile was in the mid 1990s, yet so many teams practice agile like it’s 1999! Meanwhile, agile/lean pioneers and practitioners have […]
Read more


Hazardous Code Death Spiral (and a Cure)

Posted November 2, 2015 by Bill Wake in Refactoring

Hazardous code begets even more hazardous code—eventually.
Read more

No comments

Improving Extract Method

Posted November 19, 2014 by Joshua Kerievsky in Refactoring, Software Design

Automated refactoring tools have gotten better and better over the years, yet the pace of improvement seems to have slowed dramatically. I now find myself living with flaws that I’d love to see fixed. For example, the Extract Method automated refactoring seems to be unable to do something really basic, like recognize cases of duplicated […]
Read more