我读过关于重构的内容,并且可能在我知道它之前就已经完成了,但是我并不是真的知道它实际上是什么以及它实际意味着什么。
答案 0 :(得分:6)
从您的角度来看,重构是什么?
作为一个纯粹的学术定义,重构是现有代码的一种重大改变,它(理论上)不会影响行为或输出。
就实际意义而言,它可以是各种各样的事物。作为一个小样本:
如果听起来很多这些例子都应该事先做好,那就是故意的;很多重构只是简单地将你编写的代码改编成你应该编写它的方式开始(但是,公平地说,很多重构也不符合此描述)。
你是如何以及何时做的?
“什么时候”既短又大无助:何时可以,什么时候必须。
当可以时,确保您编写的代码将来不会削弱(或跛)您是很重要的。如果你事先采用快捷方式按时发货,那么你可能会在未来的某个时间内有机会专注于重构。然而,拥有“停工时间”的想法显然只是商业世界的一个神话;)
重构的时间需要通常是一个判断调用,其中说“团队需要更少的时间将此代码重构为此更改所需的内容(或修复此问题)但是它会以这样的方式编写新代码,以至于它适合那些“。这是一种应该像瘟疫一样避免的情况;重构比新代码更危险(通常),因为你正在改变已经(希望)已经测试过的东西。根据定义,在“时间紧缩”的情况下这样做会更加危险。
与大多数维护编码一样,重构几乎没有短期利益(毕竟,你没有改变输出)。这些好处来自于正确的前期设计,可以减少未来的维护负担,并且可以更快地(有希望地,更可靠)更改。
从好的方面来说,重构可能会令人愉快(虽然它有时也令人抓狂)
答案 1 :(得分:3)
重构是查看旧代码并将其收紧的过程,同时确保它仍然有效。有几种方法可以进行重构:
通常我会将其作为测试驱动开发的一部分。首先,设置单元测试,并编写代码的第一遍以使其具有功能,但尽管它可能很难看。接下来,整理代码,实现设计模式等,并使用单元测试来确保您的更改不会破坏代码。
答案 2 :(得分:1)
根据Wikipedia,重构是“在不修改其外部功能行为的情况下更改计算机程序源代码以改进软件的某些非功能属性的过程”。
当代码开始变得难以维护或效率低下以至于值得花时间和精力重新编写代码时,我倾向于这样做。当我即将开始处理将要添加一些新功能的程序的更新版本时,也可能发生重构。有时需要对原始版本进行更改,这些更改对程序的外观没有任何影响,以便更好地支持新版本中的添加。
答案 3 :(得分:1)
重构正在改变现有代码的设计,同时保持功能相同。
您的想法是更改设计,以便更容易实现新功能。
答案 4 :(得分:1)
关于何时进行重构:
答案 5 :(得分:0)
从您的角度来看,重构是什么?
有关旧代码库的各种工作,以改进其结构,优化某些代码指标,并且通常使其更适合当今的需求。
你是如何以及何时做的?
在最好的情况下,这项工作是以代码审查的形式定期完成的。这应该是一个预防性的活动,为时已晚。如果为时已晚,如果您尝试触摸它以添加新功能,则当您看到代码的一部分即将崩溃到完全混乱时,就会执行此操作。此外,当代码结构不再适合添加新功能时,仅仅是为了了解项目需求及其未来发展方向。
答案 6 :(得分:0)
重构只是意味着改变程序的设计或程序的一部分。在面向对象的编程中,它通常意味着您重新考虑类层次结构。
它完成的原因仅仅是因为你意识到早期的设计决策是错误的,从长远来看,做出这么大的改变会更好,这样你才能拥有正确的设计。
某些IDE(如Visual Studio)具有重构工具,例如能够选择代码并将其提取到方法中,或者轻松地重命名变量。如果没有这些,重构必须手动完成,因为它通常用C ++等语言完成,很难自动重构。
答案 7 :(得分:0)
重构是从不可维护的代码地狱创建可维护代码的过程。
即。如果你的代码中有这样的东西,那么真的,真的是重构它的时候了:
function show_movies($num=10, $maxpages=10, $order_by="M.produced DESC", $rand=0)
{
global $template, $off, $cat, $cat_long, $cat_field, $lang, $mid, $cat_long2, $sfm;
global $sea, $seaquery, $lng, $sub, $aff, $spe, $da, $cat_not, $PHP_SELF, $HTTP_HOST;
global $q, $_SESSION, $VC_LANG, $john;
[... snip 356 lines of code that works with all those variables ...]
}
(可悲的是这是我必须使用的代码,我没有时间来重构它...哦,如果有人想知道,$ john启用调试模式并来自GET通过register_globals ...我讨厌我的寿命)
通常在您还在开发时进行重构,与“构建一次以将其丢弃”相关。您首先开发工作代码,然后重构它以创建可用的和可维护代码。
在许多情况下,您的前任忘记了第二步,并且您(几乎)没有可维护的工作代码。通常它总结(通常是错误的)遗留代码,代码存在,没有人想要触摸但驱动整个业务。在这种情况下,您尝试将代码分成几部分,编写测试并确保新代码完全按照旧代码执行,更好更清洁。
答案 8 :(得分:0)
重构就是让您的代码更易于维护。
实际上,软件的要求不断变化,导致软件不断变化。在一段时间内,软件开始变得复杂。正如Lehman在软件演化方面所做的出色工作所正确说明的那样,“随着系统的发展,其复杂性会增加,除非工作是为了维持或减少它”。因此,我们必须定期降低软件的复杂性,这就是为什么需要重构的原因。