我遇到了一种情况,我需要更改我的 API,需要知道我拥有的最佳选择:最初我的 API 声明:
DFS dfs = new DFS(Graph);
dfs.runDFS(source);
现在,我在我的 DFS 代码中添加了另一个函数,以返回从输入顶点到源的 dfs 路径。因此我的新的干净 API 看起来像:
DFS dfs = new DFS(Graph, source); // BREAKS THE CONTRACT.
dfs.runDFS(); // BREAKS THE CONTRACT.
dfs.getPathFromSource(vertex);
如果我确实保持向后兼容性(保持 2 个构造函数和 2 个 runDFS 函数),我的客户会遇到另一个问题:
DFS dfs = new DFS(Graph);
dfs.runDFS();
dfs.getPathFromSource(vertex);
虽然向后兼容,但有一个错误,因为任何地方都没有提到源代码(无论是在构造函数中还是在函数调用中)。
请在这种情况下建议最佳 API 实践。谢谢