这绝对是一个与语言无关的问题,而且已经困扰我相当长时间了。一个例子可能会帮助我解释我所面临的困境:
假设我们有一个方法,负责读取文件,用一些对象填充集合(这些对象存储来自文件的信息),然后返回该集合...就像下面的代码:
public List<SomeObject> loadConfiguration(String filename);
让我们假设在实现此方法时,如果返回的集合为空(大小为0),则应用程序继续似乎是不可行的。现在的问题是,这个验证(检查空集合并可能随后抛出异常)应该在方法内部完成吗?或者,这个方法的唯一责任应该是执行文件加载并忽略验证任务,允许在稍后的某个阶段完成验证?
我想一般的问题是:将验证与方法执行的实际任务解耦是否更好?这会使事情在以后更容易改变或建立 - 在我的上面的例子中,以后可能会添加不同的策略来恢复从“loadConfiguration”方法返回空集合的事件......如果在方法中进行验证(和结果异常),这将是困难的。
也许我在寻找一些教条式的答案时过于苛求了,在某种程度上只取决于方法使用的上下文。无论如何,我很想看看其他人对此有什么看法。
谢谢大家!