<?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>AgilePHP &#187; 重构</title>
	<atom:link href="http://www.agilephp.net/tag/%e9%87%8d%e6%9e%84/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.agilephp.net</link>
	<description>开发可以敏捷，人生需要慢慢体味</description>
	<lastBuildDate>Fri, 09 Jul 2010 14:37:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Refactor</title>
		<link>http://www.agilephp.net/2010/01/refactor/</link>
		<comments>http://www.agilephp.net/2010/01/refactor/#comments</comments>
		<pubDate>Sun, 24 Jan 2010 06:32:57 +0000</pubDate>
		<dc:creator>bbiao</dc:creator>
				<category><![CDATA[技术]]></category>
		<category><![CDATA[软件]]></category>
		<category><![CDATA[refactoring]]></category>
		<category><![CDATA[软件工程]]></category>
		<category><![CDATA[重构]]></category>

		<guid isPermaLink="false">http://www.agilephp.net/2010/01/refactor/</guid>
		<description><![CDATA[为什么要重构？我不知道教科书是或是别人都会怎么讲，但是重构对我来说，基本上就是把一个糟糕的设计重新写一遍。那么，什么是我定义的两糟糕的设计？又怎么样来重写，并且期望能够达到一个怎么样的目的才算是一个好的重构呢？
糟糕的设计：


因为时间紧，任务重，没有进行设计，基本上是随心所欲的写出来的代码；


充斥着“if…else…”，打了无数的补丁，新增功能的时候，就得多增加判断条件；


代码变得越来越复杂，相同的代码出现在了不同的地方，修改一处，必须时刻记着也要修改别的地方


那怎么样来重写呢？完全抛弃以前的代码么？


完全抛弃以前的代码：之前的代码写得实在是太糟糕，没有任何可取之处。而且没有办法使用一些重构工具一进行梳理。我自己没有遇到过这种情况。每一小段代码还不至于写得面目全非，这应该算是代价相对较重的一种重构方法，与其说是重构，不如说是重新写。


使用之前的代码：之前的代码，小的部分还是可以使用的，将它们独立出来，形成单独的模块，并使用一定的模块调用机制（如使用事件机制、插件系统）等，来调合各个不同的模块之间进行谐调工作。


我希望能达到一个几样的效果呢？


简单的说，我比较追求系统的可扩展性（scalability &#38; extensibility）、可维护性、较高的系统性能。


scalability是期望在一个较大的数据集前，系统也可以有一个比较好的表现； 


extensibility是期望系统能够容易的增减功能；


可维护性是期望系统在需要做出修改的时候，可以更加方便；


较高的系统性能，这个就不必说了，谁都希望自己的程序跑得更快。


有些时候，做重构并不是一个简单的决定，因为你要做出更多的工作，还不一定能搞出一个可用的系统来，但是，有风险的事情，做成功了会收获很大的好处，大部分时间，我还是咬咬牙会去选择重构代码。
==eof==
这篇文章也发表在AgilePHP上，快去看看，Refactor










Related Posts

	没有相关文章

<!-- Easy AdSense V2.90 -->
<!-- Post[count: 2] -->
<div class="ezAdsense adsense adsense-leadout" style="float:left;margin:12px;"><script type="text/javascript"><!--
google_ad_client = "pub-1450467177950189";
/* AgilePHP Lite Ad */
google_ad_slot = "7710335250";
google_ad_width = 234;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<!-- Easy AdSense V2.90 -->



<h3>Related Posts</h3>
<ol>
	<li><a href="http://www.agilephp.net" rel="bookmark">没有相关文章</a></li>
</ol>
]]></description>
			<content:encoded><![CDATA[<p>为什么要重构？我不知道教科书是或是别人都会怎么讲，但是重构对我来说，基本上就是把一个糟糕的设计重新写一遍。那么，什么是我定义的两糟糕的设计？又怎么样来重写，并且期望能够达到一个怎么样的目的才算是一个好的重构呢？</p>
<p><font color="#008080">糟糕的设计：</font></p>
<ol>
<li>
<div align="left">因为时间紧，任务重，没有进行设计，基本上是随心所欲的写出来的代码；</div>
</li>
<li>
<div align="left">充斥着“if…else…”，打了无数的补丁，新增功能的时候，就得多增加判断条件；</div>
</li>
<li>
<div align="left">代码变得越来越复杂，相同的代码出现在了不同的地方，修改一处，必须时刻记着也要修改别的地方</div>
</li>
</ol>
<p align="left"><font color="#008080">那怎么样来重写呢？完全抛弃以前的代码么？</font></p>
<ol>
<li>
<div align="left">完全抛弃以前的代码：之前的代码写得实在是太糟糕，没有任何可取之处。而且没有办法使用一些重构工具一进行梳理。我自己没有遇到过这种情况。每一小段代码还不至于写得面目全非，这应该算是代价相对较重的一种重构方法，与其说是重构，不如说是重新写。</div>
</li>
<li>
<div align="left">使用之前的代码：之前的代码，小的部分还是可以使用的，将它们独立出来，形成单独的模块，并使用一定的模块调用机制（如使用事件机制、插件系统）等，来调合各个不同的模块之间进行谐调工作。</div>
</li>
</ol>
<p align="left"><font color="#008080">我希望能达到一个几样的效果呢？</font></p>
<ol>
<li>
<div align="left">简单的说，我比较追求系统的可扩展性（scalability &amp; extensibility）、可维护性、较高的系统性能。</div>
</li>
<li>
<div align="left">scalability是期望在一个较大的数据集前，系统也可以有一个比较好的表现； </div>
</li>
<li>
<div align="left">extensibility是期望系统能够容易的增减功能；</div>
</li>
<li>
<div align="left">可维护性是期望系统在需要做出修改的时候，可以更加方便；</div>
</li>
<li>
<div align="left">较高的系统性能，这个就不必说了，谁都希望自己的程序跑得更快。</div>
</li>
</ol>
<p align="left">有些时候，做重构并不是一个简单的决定，因为你要做出更多的工作，还不一定能搞出一个可用的系统来，但是，有风险的事情，做成功了会收获很大的好处，大部分时间，我还是咬咬牙会去选择重构代码。</p>
<p align="left">==eof==</p>
<p align="left">这篇文章也发表在AgilePHP上，快去看看，Refactor</p>
<!-- Easy AdSense V2.90 -->
<!-- Post[count: 3] -->
<div class="ezAdsense adsense adsense-leadout" style="float:left;margin:12px;"><script type="text/javascript"><!--
google_ad_client = "pub-1450467177950189";
/* AgilePHP Lite Ad */
google_ad_slot = "7710335250";
google_ad_width = 234;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>
<!-- Easy AdSense V2.90 -->



<h3>Related Posts</h3>
<ol>
	<li><a href="http://www.agilephp.net" rel="bookmark">没有相关文章</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.agilephp.net/2010/01/refactor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
