Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.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 - Fatal编程技术网

Java 重写整个程序值得吗?

Java 重写整个程序值得吗?,java,Java,我有一个Java项目,我已经努力工作了大约6个月(3个月硬核),大约有8000行代码。。。然而,我已经比6个月前好多了,我有多个类,其中充满了混乱、无序和未注释的代码 虽然我的新代码要好得多,但在查看一些旧代码时,我经常会发现自己迷失了方向。你认为值得花时间重写我认为写得不好的4000-5000ish行代码吗?我没有太多的时间工作,每天最多只有3个小时 我不知道我是否应该接受我的旧代码已经过时的事实,继续下去,或者我是否应该回去,完全重写我的大部分程序,然后在将来有一条更容易的道路。或者可能有不

我有一个Java项目,我已经努力工作了大约6个月(3个月硬核),大约有8000行代码。。。然而,我已经比6个月前好多了,我有多个类,其中充满了混乱、无序和未注释的代码

虽然我的新代码要好得多,但在查看一些旧代码时,我经常会发现自己迷失了方向。你认为值得花时间重写我认为写得不好的
4000-5000
ish行代码吗?我没有太多的时间工作,每天最多只有3个小时

我不知道我是否应该接受我的旧代码已经过时的事实,继续下去,或者我是否应该回去,完全重写我的大部分程序,然后在将来有一条更容易的道路。或者可能有不同的解决方案?有什么想法吗?谢谢我真的很感谢你的帮助,因为现在我不知道我是否应该继续下去,因为我知道我可能只是在浪费时间。

是的

在同样的位置上(不止一次不幸地),我可以说这是非常值得的——如果你在6个月后回到你的一个项目中——你会看到那些旧代码,并想知道你到底想做什么。另外,你可能想在某个时候给未来的雇主发一些你工作的例子,如果他们看到的代码太草率,那就不好看了。更糟糕的是,如果他们看了代码,看到两种截然不同的风格(邋遢和整洁),他们会认为你剽窃了代码

您还(很可能)会发现,重写这些4k代码行会导致更少的代码行。或者,它会导致代码更加可重用。当你重新编码的时候,试着考虑一下DRY(不要重复你自己)。如果你不止一次地使用某个东西,就把它变成一个函数或一个类


此外,将来扩展/更改工作时,您将节省大量时间。

一定要重新编写。你仍然在学习,而且可能从你第一次开始就学到了很多。现在,您对编程有了更多的了解,并且对软件需求有了更好的了解,您可能会做得更好


话虽如此,这只是一个有趣的项目。在商业世界中,你必须考虑在花费金钱和时间和金钱方面进行改写的时间,而不是增加新的特性等,并与试图保持旧系统保持运行的浪费的金钱进行比较。只有在重写总体上更便宜的情况下,大多数企业才会采用它。

这是许多开发人员提出的一个常见问题,它会引出其他更重要的问题,帮助您成为一名更好的程序员

问问自己:

  • 我在代码中使用javadocs吗
  • 我经常重复代码吗
  • 我是否使用已建立的模式并在整个项目中坚持使用它们
我问的原因是,这些问题的答案将影响新代码在未来的可读性,即使您确实重写了代码


在现实世界中,一个很有用的练习是:我能在不重写现有代码的情况下优化现有代码吗?如果你想专业编程的话,这是一项非常重要的技能。

正如其他海报所提到的,这可能非常有益。您应该借此机会为所有新代码编写JUnit测试(如果您还没有这样做的话),因为这将有助于您编写封装良好、解耦良好的代码。两本非常好的参考书是Martin Fowler()的《重构》,以及Michael Feathers()的《有效处理遗留代码》


玩得开心

那要看你了。我个人认为这是一种学习锻炼。我有一个项目,我一直在工作4-6年,断断续续,我想开始它的第四次化身。基本上剥离所有代码,扔掉那些我不想使用的部分,清理其他部分的API以使其更具功能,并引入新代码……但我就是这样疯狂。最糟糕的情况是,你不想修改代码,因为你花了太多时间在上面,尽管它是垃圾……对不起,你能给我解释一下什么是Javadoc吗?Javadoc是描述代码功能的类、方法、字段等上面的元数据。它们的形式是:
/**…一些描述文本*/
并将它们直接放在函数方法或类或任何东西的上方。然后,您可以使用ide的功能来阅读您在其上使用的任何东西的“文档”(eclipse中的f2)。这是一种成熟的语法,您可以阅读并使用它。我总是在我写的所有东西上使用javadocs,而且我从来都不会忘记我写的东西。对不起,但是什么是JUnit测试呢?啊,非常好的问题-当你在做TDD的时候,用Kent Beck的例子学习它()!这是一个长答案-短答案:您编写的代码可以练习您的产品代码,并帮助您思考类设计。