When you have a complicated algorithm composed of many steps, sometimes you can group related steps and send a message to invoke them. The intended purpose of the message isn’t to provide a hook for specialization or anything sophisticated like that. It is just old-fashioned functional decomposition. The message is there simply to invoke the sub-sequence of steps in the routine.
Decomposing messages need to be descriptively named. Most readers should be able to gather what they need to know about the purpose of the subsequence from the name alone. Only those readers interested in implementation details should have to read the code invoked by the decomposing message.
Difficulty naming a decomposing message is a tip-off that this isn’t the right pattern to use. Another tip-off is long parameter lists. If I see these symptoms, I inline the method invoked by the decomposing message and apply a different pattern, like Method Object, to help me communicate the structure of the program.
|This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License|