Android 如何缩小基于时间(r)的bug

Android 如何缩小基于时间(r)的bug,android,Android,我这里有一个模块,负责平滑一些UI输出。它由带有时间戳的数据提供。模块本身有一个计时器,与大量代码一起确保在另一端有一个良好的视觉效果 但有时,整个事情都会陷入困境。它极难复制,到目前为止,我可以缩小一些范围。 1) 输入仍然工作正常 2) 该设备仍能响应 所以,在某种程度上,平滑的逻辑有一个缺陷,在某些条件下,它会挂断东西。我记录了所有的“返回”,因为它仍然在绘图,但是值似乎没有改变,所以链必须在某个地方被切断 代码中的每个return语句都是有意义的,它们每隔一段时间就会被调用一次,这是出于

我这里有一个模块,负责平滑一些UI输出。它由带有时间戳的数据提供。模块本身有一个计时器,与大量代码一起确保在另一端有一个良好的视觉效果

但有时,整个事情都会陷入困境。它极难复制,到目前为止,我可以缩小一些范围。 1) 输入仍然工作正常 2) 该设备仍能响应

所以,在某种程度上,平滑的逻辑有一个缺陷,在某些条件下,它会挂断东西。我记录了所有的“返回”,因为它仍然在绘图,但是值似乎没有改变,所以链必须在某个地方被切断

代码中的每个return语句都是有意义的,它们每隔一段时间就会被调用一次,这是出于正当的原因,而且它们不会破坏代码。但必须有一系列事件/事物/价值观打破了这一局面

代码本身写得很差(由某个实习生编写,他现在不知道他当时做了什么),几乎没有文档,我很难理解代码,我也不是傻瓜

该模块“工作”,我们不知道该错误是否一直存在,或者是否有一天它是由其他一些更改引入的。时间紧迫,单元测试不存在。 我知道应该有所不同,但那只是现实生活

现在总是有重写。。。但是,我怎么能先尝试缩小这个bug的范围,也许可以省下很多麻烦,然后用一些快速n-dirty来修复它?!(也许它一点也不脏,我只是修复了缺失的1%到100%的工作)

我没有单元测试的经验,我真的不知道在这种情况下我们讨论的是什么样的时间来设置测试。我远远超出了理想状态,它更像电影《捕食者》中的施瓦辛格


欢迎任何帮助。

根据我的经验,有时理解和反向工程别人的代码要比从头开始编写自己的版本花费更多的时间。在过去,我决定自己重写完整的程序,有时将代码减少80%,从而生成更优雅、可读性更强的代码。如果我们谈论的是一个巨大的项目,这可能是不可能的

但要记住一些重要的事情:
-您知道算法吗,还是必须先对其进行反向工程
-使用您的技能在合理的时间内重写代码是否可行
-您需要经常维护代码吗

另外,如果代码是由一个没有经验的程序员编写的,那么将来您可能会发现更多的bug


你给我们的信息很少,不可能给你精确的建议。使用你最好的判断,如果可能的话重写部分代码,将代码分成不同的类,模块化,重命名变量,清理它。。。这个错误可能会变得更加明显。

仅用抽象信息很难解决这个问题。你能提供一些更具体的机制是如何工作的吗?这是一项背景任务吗?在服役?这听起来像是某种比赛状态。也许一个好的开始是将线程同步到不存在并发的状态,并检查问题是否仍然存在。它是如何工作的?带有计时器和大量代码的简单pojo。如果是比赛条件,我怎么知道在哪里?同步所有东西可能会导致真正的死锁如果我只是重写其中的一部分,也许我修复了一些让它继续运行的东西。哲学问题:这是一件坏事吗?