Skip to content

XP123

Exploring Extreme Programming

Menu

Primary menu

  • Home
  • Refactoring Workshop
  • Start Here
    • Comics
    • TDD: Test-Driven Development
    • Refactoring
    • User Stories
    • Dungeons & Patterns
  • Update
  • About
  • Contact

Tag Archives: design

“Test Interface, Not Implementation”

Posted on January 23, 2026 by Bill Wake

“Test Interface, Not Implementation” Perhaps you’ve heard the phrase “Test interface, not implementation”, or its relative, “Test behavior, not implementation”. We’ll look at this from the TDD perspective, growing a system in small steps of testing and refactoring. Note: I Continue reading “Test Interface, Not Implementation”→

Posted in xp123.com | Tagged design, programmer, tdd, XPlorations

How to Reduce Coupling, Three Ways

Posted on November 4, 2025 by Bill Wake

Two objects are coupled if changing one requires us to change the other. (See Yourdon and Constantine.) We’d like to reduce coupling, since it makes changing code more complicated. A change in a highly-coupled object requires a change in others, Continue reading How to Reduce Coupling, Three Ways→

Posted in xp123.com | Tagged design, programmer, XPlorations

Reordering Items, Four Ways

Posted on September 22, 2025 by Bill Wake

Recently I needed to implement a drag-and-drop reordering, with persistence. At least with SwiftUI, reordering is easy if it’s all in memory: you have an array of items, the UI tells you which ones were dragged and where, and you Continue reading Reordering Items, Four Ways→

Posted in xp123.com | Tagged design, programmer, XPlorations

And-Or Trees

Posted on September 10, 2024 by Bill Wake

Suppose you want to represent a finite set of possibilities in a compact way. An And-Or Tree can do this, and is useful in several situations. An And-Or Tree has leaf nodes and interior nodes. The leaf nodes contain some Continue reading And-Or Trees→

Posted in xp123.com | Tagged design, programmer, XPlorations

TDD with a Function Pipeline

Posted on June 6, 2024 by Bill Wake

Our “geek” group tackled a problem a couple weeks ago, that one of us had heard suggested by Michael Feathers: given a sequence of numbers, tell how many non-zero runs it has. Ron Jeffries described a procedural implementation; we’ll look Continue reading TDD with a Function Pipeline→

Posted in xp123.com | Tagged design, programmer, refactoring, XPlorations

Trees – Confidence in Design

Posted on May 2, 2024 by Bill Wake

Test-Driven Development (TDD) depends on assembling well-tested parts into a trustworthy whole. Some design structures make this easier. Today, we’ll look at trees. A tree is a structure consisting of leaf and interior nodes. An interior node contains some number Continue reading Trees – Confidence in Design→

Posted in xp123.com | Tagged design, programmer, tdd, XPlorations

Pipelines – Confidence in Design

Posted on April 4, 2024 by Bill Wake

The other day, Kent Beck pointed out a skill that test-driven development (TDD) relies on but doesn’t give much guidance about: “behavioral composition”. This is the skill of dividing a big behavior in such a way that we trust the Continue reading Pipelines – Confidence in Design→

Posted in xp123.com | Tagged design, programmer, tdd, XPlorations

Threaded Code (and Composite)

Posted on March 7, 2024 by Bill Wake

Let’s look at the threaded code approach. It’s a less-well-known way to build an interpreter for a programming language. (The more common approach simulates each instruction.) Threaded code has a high-level analog, and some extra tricks when done in assembly Continue reading Threaded Code (and Composite)→

Posted in xp123.com | Tagged design, programmer, XPlorations

Organizing Fields and Methods

Posted on November 2, 2023 by Bill Wake

When you’re making a class, in what order do you put the fields and methods? We’ll look at several choices and some tradeoffs between them. Organizing Fields I’ve seen a few approaches to organizing fields: In C#, Swift, and some Continue reading Organizing Fields and Methods→

Posted in xp123.com | Tagged design, programmer, XPlorations

Reduce Dependencies Using Lambda

Posted on October 5, 2023 by Bill Wake

When A depends on B (A → B), a change in B may force A to change as well. Dependencies are both good and bad: they let objects work together, but they make software harder to change. We can use Continue reading Reduce Dependencies Using Lambda→

Posted in xp123.com | Tagged design, programmer, refactoring, XPlorations

Post navigation

← Older posts

Primary Sidebar Widget Area

Stay Up-to-Date

If you'd like to hear when articles come out, sign up today!

|●  Become a Patron!

Recent Posts

  • AAA and the Object Lifecycle
  • “Test Interface, Not Implementation”
  • How to Reduce Coupling, Three Ways
  • Reordering Items, Four Ways
  • And-Or Trees
  • Run Tests Without an App — Step by Step with Xcode
  • Swift Testing – A New Unit Testing Framework
  • TDD with a Function Pipeline
  • Trees – Confidence in Design
  • Pipelines – Confidence in Design

Tags

agile analysis atdd author business charts classic coach computers conference cool customer design economics fiction games HCI history improv integration interesting intro Java job aids language lean learning metaphor music myth patterns planning programmer refactoring resources reviews scrum software spreadsheet stories tdd team tester training XPlorations

Archives

counter for wordpress
Copyright © 2026 XP123. All Rights Reserved.
Theme: Catch Box by Catch Themes
Scroll Up