代码编写技术和“丢帧”调试的最佳实践?

时间:2017-09-02 14:34:09

标签: java debugging

假设我正在开发一种软​​件,它必须通过网络平台的API检索大量数据,并且API调用是每日限制的。

软件必须:

  • 使用例如1000个API请求(限制为5000)从平台下载记录
  • 比较SQL数据库中的下载记录
  • 使用API​​(例如,其他1000个请求)
  • 更新webplatform

当我正在调试时,每次发现错误时我都无法重新运行该软件,或者我每天只能测试2到3次。

假设要检索所有用于测试的记录(例如,我不能导出下载的内容并在下次运行时导入它并保存我的API请求),我想调试一次软件而不会丢失我在会话期间下载的记录和而不会停止我的调试会话

我想到的唯一方法是在我软件的主要部分添加断点,并在我必须退后时使用丢帧

这就是我通常做的事情

MainClass.java

public class MainClass {
    public static void main(String args[]){
        // ...
        ArrayList<HashMap<String, String>> records = MyApiHandler.getRecords();
        Comparator.compareRecords(records); // breakpoint here
    }
}

Comparator.java

public class Comparator {
    public static void compareRecords(ArrayList<HashMap<String, String>> records){
        // ... after comparation, I have a "Result result"
        UploadResults.uploadResults(result); // breakpoint here
    }
}

UploadResults.java

public class UploadResults {
    public static void uploadResults(Result result){
        // ...
        MyApiHandler.updateRecords(result); // breakpoint here
    }
}

这种技术允许我在不停止调试的情况下重写代码片段。

例如,如果Comparator类中存在任何问题,我可以在该类中进行我需要的所有修改,重新编译删除框架(在此示例中)Comparator.compareRecords()和“退回”前一课MainClass,而不会丢失通过API下载的记录,然后进入 Comparator类的重新编译版本

这很有效,但结果是有一个非常多的类仅用于调试目的,最后,我必须将所有类加在一起。

有更好的方法吗?

-

编辑:我使用 Intellij IDEA

0 个答案:

没有答案