来自Code Review Stack Exchange的
This question was migrated,因为可以在Stack Overflow上进行回答。
Migrated 3年前。
考虑以下接口:
这样做有什么好处吗?
其中
除了使
我可能会缺少什么?谢谢。
Migrated 3年前。
考虑以下接口:
public interface SomeRepo
{
public IEnumerable<IThings> GetThingsByParameters(DateTime startDate,
DateTime endDate,
IEnumerable<int> categorIds,
IEnumerable<int> userIds,
IEnumerable<int> typeIds,
string someStringToFilerBy);
}
这样做有什么好处吗?
public IEnuemrable<IThings> GetThingsByParamters(IParameter parameter);
其中
IParameter
是这样定义的对象:public interface IParameter
{
DateTime startDate { get; }
DateTime endDate { get; }
IEnumerable<int> categorIds { get; }
IEnumerable<int> userIds { get; }
IEnumerable<int> typeIds { get; }
string someStringToFilerBy { get; }
}
除了使
IParameter
更具可读性外,我看不到有任何好处,但是额外的复杂性似乎并不值得。我可能会缺少什么?谢谢。
最佳答案
如果仅是那个地方,那么就不值得那么多了。
独自创建一个类确实有一些可能的好处,但是它们完全依赖于此。是否能够重用它。
您可以在IParameters
实现中添加某种形式的早期数据验证(例如,endDate
不能早于startDate
-这是常识,不需要知道它是存储库对象)。
如果某些值是可选的,而有些则不是,则Parameters
类使您有机会清楚地区分这两个类别。
与所有原始“开始日期/结束日期/ ids”数据包的出现相比,在代码中查找所有Parameters
用法要容易得多。
话虽这么说,可读性并不是一个小问题。我觉得每种方法6个参数太多了。基于经验,我不会打赌它会停在6点。
10-06 02:08