假设我有一个长期维护的代码库,就像这样:
interface IDonutRepository
{
public IEnumerable<Donut> GetDonuts();
}
它已经存在很长时间了,
GetDonuts
方法实现了它所说的功能。但有一天,我需要添加一个新屏幕来显示数据库中的所有甜甜圈,结果发现该方法有一个隐藏功能 - 它会过滤掉所有的 stale=true
的甜甜圈。但是在我的新屏幕上,我想展示全部甜甜圈,包括不新鲜的!这里应该采取什么最好的方法呢?假设这个方法在许多地方都被使用,并且默认行为需要保持不变,是最好添加一个名为
GetAllDonuts
的新方法来取消过滤,还是只需在GetDonuts
方法上添加一个onlyFresh
参数?我猜这只是判断的问题,但我想知道是否有更明智的答案?