Let’s say I have a long established repository like this:
interface IDonutRepository
{
public IEnumerable<Donut> GetDonuts();
}
It’s been around for ages, and the GetDonuts method does what it says. Then one day I need to add a new screen that shows all the donuts in the database, and it turns out that the method has a hidden feature – it filters out all donuts where stale = true. But on my new screen, I want to show all of them, even the stale ones! What is the best approach here?
Assuming that this method is used all over the place, and the default behaviour needs to stay the same, is it best to add a new method called GetAllDonuts that doesn’t do the filtering, or should I just add a onlyFresh parameter onto the GetDonuts method?
I’m guessing its just down to judgement, but I’m wondering if there are any more informed answers out there?
I would overload the method creating a new overload that takes the
showStaleparameter and then modify the old method to use the new overload passingfalsefor the parameter value.The interface would look like:
Or if you’re using .NET 4.0, you can use an optional parameter: