SoftwareSeam

Last edit January 3, 2006
MichaelFeathers describes a Seam as a place where you can alter behavior in your program without editing in that place in his book WorkingEffectivelyWithLegacyCode.

An excerpt of the full description is published at http://www.phptr.com/articles/article.asp?p=359417&seqNum=2&rl=1. --BrianTakita

As with stone-cutting, you discover seams in your LegacyCode as you try to extract smaller gems to UnitTest from the BigBallOfMud of your LegacyCode (to extend a metaphor).

There are several ways to implement a seam:
  • using the language pre-processor or other macro facilities of the source language
  • using virtual methods if working in an object oriented system
  • using linker options