如何以純文字方式簡單快速記錄java程式碼的呼叫過程
阿新 • • 發佈:2021-11-18
示例
下面這個類:
public class Test { void main() { System.out.println("main"); test1(); test2(); } void test1() { } void test2() { test3(); test4(); test5(); test8(); } void test3() { System.out.println("test3"); } void test4() { } void test5() { test6(); } void test6() { test7(); } void test7() { } void test8() { } }
記錄方式和閱讀方法:
Test#main //進入Test.main方法 test1(); //執行Test.main裡程式碼 test2(); //執行Test.main裡程式碼 Test#test2 //進入Test.test2方法 test3(); //執行Test.test2裡的方法 Test#test3 //進入Test.test3方法 System.out.println("test3"); //執行Test.test3裡的方法 test4(); //縮排結束, 表示從Test.test3返回; test3()和test4()在同一個方法裡, 縮排這兩者之間的程式碼; test5(); Test#test5 //進入Test.test5, 下一行忽略了test5裡的方法體 Test#test6 //進入Test.test6 Test#test7 //進入Test.test7 Test#test8 //進入Test.test8, test5()和test8()在同一個方法裡, 縮排這兩者之間的程式碼;
提示: idea裡可以在程式碼上右鍵 -> copy/paste special -> copy reference(ctrl+shift+alt+c)複製方法的引用名; 結合ahk指令碼可以截斷包名, 只留下類名;
說明
需求: 純文字方式, 規則簡單, 靈活可擴充套件;
可選方式:
- 文字方式繪製流程圖; 缺點: 略複雜; 沒有視覺化的情況下不好閱讀; 樣式死板;
自定義的一套規則:
- 從上到下表示程式碼的執行過程;
- 如果某行包含
#
號, 表示進入了某個方法,#
前是類名,#
後是方法名 - 如果不包含
#
號, 表示是方法體裡的程式碼, 有時候可以省略; - 如果從某個方法返回, 給返回的方法增加縮排; 縮排同級程式碼之間的程式碼(或者說: 同一個方法體裡的程式碼保持相同的縮排);
哪位大佬有好的方式歡迎指教.