我遇到了一個情況,我需要改變我的API,要知道我有最好的選擇需要: 最初我的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);
雖然向後兼容,有一個bug,因爲在任何地方都沒有提到這個源碼(在構造函數和函數調用中都沒有提到)。
請在本方案中建議最佳API實踐。謝謝