<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>重构</title>
	<atom:link href="https://www.aitaocui.cn/tag/209389/feed" rel="self" type="application/rss+xml" />
	<link>https://www.aitaocui.cn</link>
	<description>翡翠玉石爱好者聚集地</description>
	<lastBuildDate>Thu, 24 Nov 2022 15:05:13 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.1.1</generator>

<image>
	<url>https://www.aitaocui.cn/wp-content/uploads/2022/11/taocui.png</url>
	<title>重构</title>
	<link>https://www.aitaocui.cn</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>重构(计算机术语)</title>
		<link>https://www.aitaocui.cn/article/320890.html</link>
					<comments>https://www.aitaocui.cn/article/320890.html#respond</comments>
		
		<dc:creator><![CDATA[明歌]]></dc:creator>
		<pubDate>Thu, 24 Nov 2022 15:05:13 +0000</pubDate>
				<category><![CDATA[百科]]></category>
		<category><![CDATA[重构]]></category>
		<guid isPermaLink="false">https://www.aitaocui.cn/?p=320890</guid>

					<description><![CDATA[重构（Refactoring）就是在不改变软件现有功能的基础上，通过调整程序代码改善软件的质量、性能，使其程序的设计模式和架构更趋合理，提高软件的扩展性和维护性。对软件内部结构的一...]]></description>
										<content:encoded><![CDATA[</p>
<article>
<p>重构（Refactoring）就是在不改变软件现有功能的基础上，通过调整程序代码改善软件的质量、性能，使其程序的设计模式和架构更趋合理，提高软件的扩展性和维护性。对软件内部结构的一种调整,目的是在不改变&quot;软件之可察行为&quot;前提下,提高其可理解性,降低其修改成本。</p>
</article>
<article>
<h1>必要</h1>
<p>一个软件总是为解决某种特定的需求而产生，时代在发展，客户的业务也在发生变化。有的需求相对稳定一些，有的需求变化的比较剧烈，还有的需求已经消失了，或者转化成了别的需求。在这种情况下，软件必须相应的改变。</p>
<p>考虑到成本和时间等因素，当然不是所有的需求变化都要在软件系统中实现。但是总的说来，软件要适应需求的变化，以保持自己的生命力。</p>
<p>这就产生了一种糟糕的现象：软件产品最初制造出来，是经过精心的设计，具有良好架构的。但是随着时间的发展、需求的变化，必须不断的修改原有的功能、追加新的功能，还免不了有一些缺陷需要修改。为了实现变更，不可避免的要违反最初的设计构架。经过一段时间以后，软件的架构就千疮百孔了。bug越来越多，越来越难维护，新的需求越来越难实现，软件的架构对新的需求渐渐的失去支持能力，而是成为一种制约。最后新需求的开发成本会超过开发一个新的软件的成本，这就是这个软件系统的生命走到尽头的时候。</p>
<p>重构就能够最大限度的避免这样一种现象。系统发展到一定阶段后，使用重构的方式，不改变系统的外部功能，只对内部的结构进行重新的整理。通过重构，不断的调整系统的结构，使系统对于需求的变更始终具有较强的适应能力。</p>
<p>重构可以降低项目的藕合度，使项目更加模块化，有利于项目的开发效率和后期的维护。让项目主框架突出鲜明，给人一种思路清晰，一目了然的感觉，其实重构是对框架的一种维护。</p>
<p>在重构时提倡将代码模块进行细分，因为模块越小，可重用度就越大。不要写大函数，如果你的函数过大，那么这意味着你的函数需要重构了。因为函数过大，可维护性，可理解性就会变差。并且当你实现类似功能的时候就容易产生重复代码。写代码时，最忌讳的就是代码重复。</p>
<h1>目标</h1>
<p>改进软件设计使软件更容易被理解</p>
<p>帮你找到bug</p>
<p>提高软件的开发速度</p>
<h1>时机</h1>
<p>在添加新功能时进行重构。</p>
<p>在修改bug时进行重构。</p>
<p>在代码复审时进行重构。</p>
<p>到了最后的交付期限，不进行重构</p>
<h1>间接层</h1>
<p>间接层的存在的价值：允许逻辑共享；分开解释意图和实现；将变化加以隔离；将条件逻辑加以编码</p>
<p>但是过多的间接层会导致代码的层次太深，使代码难以阅读.因些要权衡加入间接层的利弊.</p>
<h1>难题</h1>
<p>关系数据库与面向对象编程的问题——在对象模型和数据库模型之间插入一个分隔层，这就可以隔离两个模型各自的变化.升级某一模型时只需同时升级上述的分隔层即可.这样的分隔层会增加系统复杂度.但是能增加灵活度.</p>
<p>修改接口的问题——修改已发布的接口，因为已发布的接口会供外部人员（其它公司）使用，因此，修改接口会导致引用接口的其它程序不修改程序就无法运行.修改接口的最好的办法是增加一个新的接口，让旧接口调用新接口.这样原来的程序就不用修改了.对于接口的另一个建议是尽量不要发布接口.</p>
<h1>设计</h1>
<p>重构与设计是互补的，程序应该是先设计，而在开始编码后,设计上的不足可以用重构来弥补.设计应该是适度的设计，而不必过度的设计.如果能很容易的通过重构来适应需求的变化，那么就不必过度的设计，当需求改变时再重构代码.</p>
<h1>提高性能</h1>
<p>提高性能的三种方法：</p>
<p>时间预算法——在设计时就对程序花费的时间进行预算，通常用于性能要求极高的实时系统.普通的企业应用程序一般对性能要求不高.只要不太慢就可以了.</p>
<p>持续关注法——要求程序员在任何时间都要设法保持系统的高性能.这个方法有个缺陷，就是大部分的程序90%的优化工作都是白费劲，这样会浪费大量的时间.</p>
<p>良好的分解方式——这个方式是在开发程序阶段不对性能投以任何关注，直到进入性能优化阶段，再分析程序中性能差的程序，然后对这些程序进分解，查出性能差的程序，进行优化.</p>
</article>
<div class="mt-3 mb-3" style="max-width: 770px;height: auto;">
                                    </div>
<div class="mt-3 mb-3" style="max-width: 770px;height: auto;">
                                    </div>
<div class="mt-3 mb-3" style="max-width: 770px;height: auto;">
                                    </div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.aitaocui.cn/article/320890.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
