The chapter opens with a discussion of Fake It, Triangulate, and a light comparison of the two.
Does Fake It violate the rule that says you don't write any code that isn't needed? I don't think so, because in the refactoring step you are eliminating duplication of data between the test case and the code.
More support for my favorite lesson: duplication of data between the test case and the code is all the permission you need to continue refactoring.
I only use Triangulation when I'm really really unsure about the correct abstraction for the calculation.
I think Triangulation really suffers from the fact that the examples typically used to demonstrate it are contrived.
Beck uses addition here, he used an equality check back in chapter three -- both are cases where you could just type in the correct implementation, rather than faffing about with triangulating.
The sorts of problems that I would expect to benefit from triangulating would be more like sudoku, or code formatting, or even line wrapping, where you may need to work in the code for a bit before you get the key insight that gives you confidence in a specific abstraction.
Sandi Metz demonstrates with "simple green" that you might prefer the duplication to the abstraction anyway. Her advice was to prefer duplication over the wrong abstraction.
Back in Chapter 17 Kent observed that the money example went in "a completely different direction". And as I understand it he didn't "triangulate" to choose between candidate designs - he discovered a metaphor and just went where it lead him. This tells me that triangulation is more about the uncertainty that the abstraction will in fact be better than the duplication.
Of course, you could also try the abstraction, and then use the source control system to revert to a checkpoint if you decide that the refactoring hasn't led to an abstraction you trust.
There's no particular virtue in the halfway nature of Fake It and Triangulation.
There ceremonies are a means to an end....
Keep track of how often you are surprised by red bars....
"Call your shots" later became a more general thing - the earliest reference I can find is Needham 2010, but he in turn attributes the idea to Kent.
No comments:
Post a Comment