假设我们有一个API。何时或为什么应该使用状态检查功能?
interface Graph {
boolean checkIfPathExists(source, destination);
List<Integer> getPath(source, destination);
}
以下哪一项是最佳/推荐的实施方式。
选项1:执行检查以验证路径是否存在。如果checkPath先前未被调用,则抛出异常。
Graph g = new GraphImpl(graph);
if (g.checkIfPathExists(s, d)) {
List path = g.getPath(s, d);
}
选项2:不强制执行函数序列。如果调用getPath,让getPath()在内部调用checkIfPathExists(),并在checkIfPathExists()返回false时返回空集合。
Graph g = new GraphImpl(graph);
List path = g.getPath(s, d);
在我看来,选项2对我来说很好,但唯一的问题,我与它,是checkIfPathExists)“般的状态检查法‘(’冗余/不必要的呼叫。理想情况下,这不是getPath()应该做的。它应该只是返回路径。
哪一个更好的实现选项1或选项2?
如果option2是一个更好的选择,那么它会是一个更好的设计选择,不添加'checkIfPathExists'作为公共接口?为了提出一个更通用的状态检查方法,像'hasNext()'这样的检查方法,如果不强制执行似乎是不必要的。即使遍历一个列表,我们可以得到列表的大小,并使用for循环,直到我< =大小,并从来没有使用hasNext()。 简而言之 - 如果不执行状态检查函数,则使用状态检查函数是什么?
执行状态检查方法的任何“真实”示例?意思是说,不要将它们先前的结果称为异常?
我同意你的意见。我没有看到需要额外的函数调用'checkIfPathExists()'。 – Clocks
api不能被修改的意义是什么?这似乎与你的问题无关,或使你的问题毫无意义。 –