一种阅读代码的有效方式

平时在工作中会遇到很大的代码阅读,不知无从下手,尤其对于应用来说,不知道流程是很麻烦的事情。一种方式可以sourceinsight来看或者eclipse,但当程序比较晦涩的时候,最有效的方法还是打印信息,追踪到每一个函数。程序的脉络就清晰啦,模块就会更加的清晰。

打印代码的优点:

 1) 模块清晰,方便定位

 2) 看似很花时间,其实节约时间,只要打印信息一上去,就立即可以开始调试了


缺点:

 1)有的地方加打印是不安全的,比如中断服务和线程里面,这时候打印可能会导致死机或者异常, 这时候打印可以适当的短或者去掉打印

 2)这样的打印信息太多,需要灵活的运用grep,结合log整理思路,把层次分析清楚


下面说一说我常用的方法:

现在在做Android,先说java的如何做:

 1   新建T.java文件[文件名和函数名都最短],内容如下

----------------------------------------------------------------------------------------------------

package com.debug;

public class T {

         //函数的开始调用

public static void s() {   

StringBuffer sb = new StringBuffer();   

     

StackTraceElement[] stacks = new Throwable().getStackTrace();  

int stacksLen = stacks.length;  

sb.append("[").append(stacks[1].getClassName()).append("::")

.append(stacks[1].getMethodName()).append("()")

.append(stacks[1].getLineNumber()).append("]" );

     

sb.toString(); 

System.out.println(" ===> " +sb);

}  

        // 函数可能结束地方调用 

public static void e() {  

StringBuffer sb = new StringBuffer();   

     

StackTraceElement[] stacks = new Throwable().getStackTrace();  

int stacksLen = stacks.length;  

sb.append("[").append(stacks[1].getClassName()).append("::")

.append(stacks[1].getMethodName()).append("()")

.append(stacks[1].getLineNumber()).append("]" );  

     

sb.toString(); 

System.out.println(" <=== " +sb);

}  

}

----------------------------------------------------------------------------------------------------

  

2. 如图放置,这样可以尽可能的少影响工程代码和方便重用

      +src

          +com.debug

                T.java

          +com.android.xxx

                A.java

                B.java


3.在工程文件中包含调试代码

        import com.debug.T;


4. 调用

        函数开始的地方:T.s();   

        函数结束的地方:T.e();


  好了,这就是java中如何调用拉,C中更简单些,有时间补上吧,希望对你有帮助,谢谢!








你可能感兴趣的:(一种阅读代码的有效方式)