这是一个检查图形是否是二分的代码。我的问题是关于断言。我想要一个检查来验证图表是否为空。即使在私有函数中,有效的 java 也鼓励检查。假设我添加了一个断言图!= null,它将被检查多次调用递归函数。这显得低效。如果在调用递归函数之前检查是否完成,那么我们违反了有效 java 中规定的最佳实践,即每个函数都应该验证参数。是否有一些最佳实践/权衡等?谢谢。
private void dfsBipartiteDetector(Graph graph, int vertex, int i) {
assert graph != null; // <--------- appears inefficient for recursive call.
visited[vertex] = true;
vertexSets.get(i).add(vertex);
final List<Integer> adjList = graph.adj(vertex);
for (int v : adjList) {
if (!visited[v]) {
dfsBipartiteDetector(graph, v, i == 0 ? 1 : 0);
} else {
if (vertexSets.get(i).contains(v)) {
isBipartite = false;
}
}
}
}