Start The World's Best Introduction to TDD... free!

Refactoring, Improving Names, Simple Design Comments

Let’s look at a simple example of a name. Let’s judge the name (kindly!), then imagine some likely next steps in refactoring. We can learn and do quite a lot from only a single name!

Read on →

Refactoring Comments

No, tests aren’t supposed to make refactoring easier; they make refactoring safer. Sometimes, by accident, they do both.

Read on →

Simple Design, Refactoring Comments

The stronger your refactoring skill, the more easily you can use architecture advice as guidelines instead of as rules to enforce. This makes it significantly more likely that you’ll invest wisely in architecture, rather than over- or under-​engineer.

Read on →

Read on →

Read on →

Read on →

Refactoring, Simple Design, Evolutionary Design Comments

The most common definition of “refactoring” suffers from a common weakness that creates big problems for a very specific group of people. I’d like to help.

Read on →

Simple Design, Refactoring Comments

Refactoring means rework, which means that we didn’t “get the design right the first time”. This can indicate a problem. It can also indicate a natural process of convergence towards a suitable design. Calling it “a code smell” seems to overstate the matter.

Read on →

Evolutionary Design, Refactoring Comments

Programmers routinely give up on TDD when they try to do it in their toughest, meanest, most-valuable legacy code. I understand their impulse, but I think they’re setting themselves up for failure and ultimately missing out.

Read on →

Microtechniques, Evolutionary Design, Refactoring, Beware the Integrated Tests Scam (was Integrated Tests Are a Scam) Comments

Programmers routinely ask me for advice on which kinds of tests they ought to write: unit vs. functional, fast vs. slow, big vs. small. They keep saying “integration test” when they mean “integrated test”. We have made this confusing, so I’d like to take one step towards clarifying it.

Read on →

Tutorials Comments

Debug with automated tests: it’s systematic, it leaves a record of what we’ve learned, and it’s boring in the best possible ways.

Read on →

Simple Design, Refactoring, Evolutionary Design, Tutorials, Removing Duplication Deftly Comments

An example of test-first programming, focusing on adding behavior incrementally and removing duplication.

Read on →