Extreme Normal Form Definitions
Goal: an implied, emergent definition of ExtremeNormalForm, made from many individual definitions.
Your classes are small and your methods are small; you've said everything OnceAndOnlyOnce and you've removed the last piece of unnecessary code.
Somewhere far away an Aikido master stands in a quiet room. He is centered.. aware.. ready for anything.
Outside a sprinter shakes out her legs and settles into the block, waiting for the crack of the gun while a cool wind arches across the track.
Softly, a bell sounds.. all of your tests have passed.
Your code is in ExtremeNormalForm.. tuned to today and poised to strike at tomorrow.
-- MichaelFeathers (ExtremeNormalForm)
It is about the state of the code. All the code you use is tested. All the code that isn't tested doesnt exist. :-) No one on the team can think of code in the system that they could remove or simplify without reducing the feature set. And, you never have to go more than one place to change one thing. This puts the code in an optimized baseline state for change: equipoise between what is needed now and an uncertain future. The consequences are.. if you make mistakes you have a stable point to fall back upon. That point is as simple as things can be while still maintaining what the customer currently needs. The code is in complete alignment with the customer. Nothing is superfluous. If everyone is happy with the current capabilities, you can keep the software in ExtremeNormalForm indefinitely. It is the minima, the most understandable state, and amazingly, the readiest state for change. -- MichaelFeathers (ExtremeNormalFormCommentary)
[...] SoftwarePreparedToChange?. --KentBeck (ExtremeNormalFormCommentary)
Xnf describes the state of the software not the process that got it there.
The XNF idea is the conceptual state of software that works, is surrounded by tests to enable change, has nothing extra, assumes nothing, prohibits nothing. --RonJeffries (CanXnfComeOnlyFromFullXp)
When OnceAndOnlyOnce has been applied in a code base, it can be said to be normalized. The redundancy has been removed. [...] your code should hover around ExtremeNormalForm when you are doing XP.. developers should consider it to be the natural state of their code; deviations during development should be considered transitional. -- MichaelFeathers (ExtremeNormalFormDefined)
[...] a list of replacement heuristics [...] --AlistairCockburn (ExtremeNormalFormDefined)
The CodeSmells tell you that your code isn't in XNF. Refactor until there are no more smells. Then you are in XNF. --KentBeck (ExtremeNormalFormDefined)
Suggestion: ExtremeNormalForm means that a change in one aspect (whatever that might mean) of the code does not affect any other aspects. -- JohannesBrodwall (please suggest a replacement for the word "aspect")
EditText of this page (last edited September 26, 2002)
FindPage by browsing or searching
This page mirrored in WikiPagesAboutRefactoring as of July 17, 2004