這是爲了檢查圖是兩方或不是代碼。我的問題是關於斷言。 我想檢查圖表是否爲null。即使在私有函數中,有效的java也鼓勵檢查。比方說,我添加一個斷言圖!= null,它將被檢查多次遞歸函數被調用。這看起來效率低下。如果如果遞歸函數之前完成檢查被調用,那麼我們違反有效的Java陳述最佳實踐,每一個功能應該驗證parameters.Is有一些最佳實踐/權衡等?謝謝。遞歸調用中的斷言?
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;
}
}
}
}
我不知道assert'的'的性能,但我有一個非常快的感覺。 – Augusto
當沒有啓用斷言的情況下運行時,不應該有使用assert的任何可衡量的影響。然而,在這種情況下,無論如何你都會在這個方法中得到一個NPE(而不是在那個很難找到原因的地方)。 – Axel