0
例如,我從ASTParser獲得一個CompilationUnit。爲什麼我需要接受的,而不是使用正常方法訪問者:AST:訪問和僅使用查詢方法有什麼區別?
ASTParser parser ... //all that stuff
CompilationUnit unit = (CompilationUnit) parser.createAST(null);
然後我做的:
unit.types() //get all type declarations
,並從這裏開始我只是不斷下降的AST,直到葉節點,就像沒有使用訪問。使用訪問者模式而不是我提出的建議有什麼優勢?
我明白了。手動遍歷看起來更自然,更容易閱讀。但是,由於代碼的可讀性不僅意味着代碼的作者應該很容易讀取它,而且也可以讀取其他代碼,所以我正在重寫我的AST遍歷類 – FinnTheHuman
也許作爲一個經驗法則:如果手動遍歷是微不足道的, ,甚至可能比訪問者更可取,但只要事情變大,訪問者就是規範的解決方案。由於Java語言很大,很多從小開始的實現在填充初始間隙和漏洞時會變大。 –