我最近一直在考虑从方法中返回的东西,我注意到当方法失败时我会返回4种不同的东西.
困扰我的是,我的代码在这方面不是很有用,所以我想询问你的"最佳实践".
因此,让我们设想一个采用Foo并返回Bar列表的方法:
public IListMethod(Foo something);
或者保持更一般:
public IBar Method(IFoo something);
问题是你在什么样的失败中返回什么.选项将是:
空返回类型如:new List; 或:new EmptyBar();
空值
抛出一个例外
表示失败的特殊列表值:new List {new FailureBar()}
我真的很讨厌选项4,所以我大部分都倾向于听你何时使用其他3个选项以及为什么
我会根据失败的性质在空列表和异常之间进行选择.
例如
如果您的数据库连接失败 - 异常.
如果您的查询没有返回结果 - 空列表.