1. 程式人生 > 其它 >如何以純文字方式簡單快速記錄java程式碼的呼叫過程

如何以純文字方式簡單快速記錄java程式碼的呼叫過程

示例

下面這個類:

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指令碼可以截斷包名, 只留下類名;

說明

需求: 純文字方式, 規則簡單, 靈活可擴充套件;

可選方式:

  1. 文字方式繪製流程圖; 缺點: 略複雜; 沒有視覺化的情況下不好閱讀; 樣式死板;

自定義的一套規則:

  • 從上到下表示程式碼的執行過程;
  • 如果某行包含#號, 表示進入了某個方法, #前是類名, #後是方法名
  • 如果不包含#號, 表示是方法體裡的程式碼, 有時候可以省略;
  • 如果從某個方法返回, 給返回的方法增加縮排; 縮排同級程式碼之間的程式碼(或者說: 同一個方法體裡的程式碼保持相同的縮排);

哪位大佬有好的方式歡迎指教.