Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 优化和重新设计现有应用程序_Java_Design Patterns_Refactoring - Fatal编程技术网

Java 优化和重新设计现有应用程序

Java 优化和重新设计现有应用程序,java,design-patterns,refactoring,Java,Design Patterns,Refactoring,这似乎是许多程序员论坛上的一个普遍抱怨,所以如果这个问题已经出现在这里,我也不会感到惊讶。抱歉,如果已经回答了,但我已经搜索了,找不到与Java/OO相关的 我有一个几个月前写的有点复杂的应用程序。它工作得很好,但是速度很慢,而且代码非常难看。类没有逻辑上的原因而被拆分,UI的一半在逻辑代码中,而且它的构建非常令人沮丧。我想根据正确的设计标准重新设计和开发这个程序,但我不想完全破坏它。没有设计文档,没有文档,只有代码(没有格式)和构建的应用程序 以最烦人的方式编写现有Java项目并以最好的方式重

这似乎是许多程序员论坛上的一个普遍抱怨,所以如果这个问题已经出现在这里,我也不会感到惊讶。抱歉,如果已经回答了,但我已经搜索了,找不到与Java/OO相关的

我有一个几个月前写的有点复杂的应用程序。它工作得很好,但是速度很慢,而且代码非常难看。类没有逻辑上的原因而被拆分,UI的一半在逻辑代码中,而且它的构建非常令人沮丧。我想根据正确的设计标准重新设计和开发这个程序,但我不想完全破坏它。没有设计文档,没有文档,只有代码(没有格式)和构建的应用程序

以最烦人的方式编写现有Java项目并以最好的方式重新开发它,最好的方式是什么?有没有什么好的工具可以帮助我找到速度瓶颈或在NetBeans中进行广泛的测试?对测试新手的任何帮助都将不胜感激

编辑:你说我们不太了解这个程序是对的。它可以做我们想要的,但它也可以做其他我们不知道的事情,比如在UI上创建奇怪的图形和奇怪的数字。我们希望重新设计它的主要原因是为了让我们能够真正了解到底发生了什么,但正如我所说的,代码太乱了,你可能会认为它是一个天才写的,他不想让我们发现他的秘密。

“没有格式”

Netbeans在“源”菜单中有一个自动格式化程序选项。这将是一个良好的开端

“没有设计文档,没有文档,只有代码”

在您确定部件的功能时,记录这些功能将对您(以及您的继任者)很有帮助。这样,您就可以开始拥有可以参考的文档

在重构部分之前,使用JUnit开始向它们添加一些单元测试也不会有什么坏处

“我想根据正确的设计标准重新设计和开发此程序,但我不想完全破坏它。”

从小处做起。找出一些可以设计得更好的简单事情,并首先集中精力。在Netbeans中使用重构功能将大大有助于实现这一点。集中精力确保重构的所有东西都能正常工作(这就是为什么从小处着手会有帮助)。你清理的小东西越多,当你开始清理时,越容易清理大的东西


另外,请确保您正在进行的重构实际上是一种改进…

实际上,唯一的答案是汗水公平,但有一些东西可以帮助您:

  • 具有重构工具的优秀IDE,如
  • 代码覆盖工具,例如
  • ,有时它有助于获得即使是糟糕代码的高级视图

重构快乐

我将回应C.Ross的评论,并为我过去处理过的常见“坏代码”场景添加以下策略:

  • 代码重复:唯一比坏代码更糟糕的是同一个坏代码的多个副本。通过快速阅读(获得它的味道)并识别剪切和粘贴代码的实例,熟悉整个代码库。将它们重构为单个实现并删除重复。可能就是这样,或者您可以继续优化该代码的单个副本

  • 不要急于修复它:只清理您积极维护和/或理解的代码。这是一个变体,如果它没有坏,不要修复它,我想打电话给你,如果你不需要改变它,不要修复它。但是,任何时候你需要触摸一段代码都需要额外的10分钟来清理它。也许这只是添加格式化,添加一些内联注释,重命名变量以使其有意义,等等。任何需要更新的代码都很可能在将来再次被修改,现在您已经将所有代码都清理干净了。您还没有实际更改的代码可以保持丑陋而不损害任何东西


祝你好运:)

你拥有的基本上是一个原型。告诉你的经理这就是它,应该重写它以达到生产质量。

如前所述,一个丑陋的代码可以用一个合适的IDE由一只猴子来清理,所以我不会单独向你的经理提出这个论点

出于实际考虑,我同意:

  • 抓住一些工具(探查器、代码复制工具)来找出几个难点
  • 针对每一点,提出一个解决方案(包括简短的规范、设计、可能的代码示例、测试用例……)
  • 去找你的经理,让他决定先解决哪一个问题
  • 危险在于做得太多,并试图清理一切。根据应用程序的大小,清理它可能需要几年的时间(因为您不会全职这么做),所以请耐心等待


    当然,当您重新访问部分代码时,只需使用您最喜欢的IDE进行清理。

    JProfiler非常优秀,我昨天刚刚使用它,实际上是为了在我的一些Java代码中发现性能瓶颈

    如果您可以进行一些自动化测试,那么您就可以更好地开始重构,因为您可以确认它仍然按照预期运行。具体来说,我认为您应该将重点放在系统的非常高级别的测试上,如果它是一个web应用,请查看和/或其他web应用测试框架

    除此之外,要准备好避开许多死胡同,如果可能的话,尽量避免一次承担太多的变化。你越是能将largre应用程序分解成更小的块,你就越有可能成功。此外,要准备好接受这样一个事实,即其中一些可能永远都是垃圾,如果它没有像他们说的那样坏掉,就不要修复它。