Some functions are a way of asking a question - they return values to you. Other functions tell - you use them to tell an object or another part of the system to do something, or tell it about something that has been done. Whether to ask or tell is a basic design choice, but we don't give it much attention. Most discussion about it assumes that we are making the choice universally - we are either programming in a pure functional or an OO style. In this talk, Michael Feathers will work through code examples that show how to use of the tell/ask choice strategically to arrive at modularity that is durable and less prone to violation.
Michael Feathers is the founder and Director of R7K Research & Conveyance, a company specializing in software and organization design. Prior to forming R7K, Michael was the Chief Scientist of Obtiva. Over the years, Michael has spent a great deal of time helping teams after design over time in code bases. Michael is also the author of the book Working Effectively with Legacy Code (Prentice Hall, 2004).