<?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; refactoring</title>
	<atom:link href="http://www.agilephp.net/tag/refactoring/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.agilephp.net</link>
	<description>开发可以敏捷，人生需要慢慢体味</description>
	<lastBuildDate>Thu, 03 Nov 2011 11:53:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<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 相关文章 CentOS配置vsftpd遇到550错误的解决办法 使用JDK进行Performance Tuning 使用Grub4DOS引导Ubuntu 11.04<h3>相关文章</h3>
<ol>
		<li><a href="http://www.agilephp.net/2010/01/solve-error-550-in-centos-and-vsftpd/" rel="bookmark">CentOS配置vsftpd遇到550错误的解决办法</a><!-- (2)--></li>
		<li><a href="http://www.agilephp.net/2010/04/performance-tuning-with-jdk-tools/" rel="bookmark">使用JDK进行Performance Tuning</a><!-- (2)--></li>
		<li><a href="http://www.agilephp.net/2011/05/grub4dos-ubuntu-11-04/" rel="bookmark">使用Grub4DOS引导Ubuntu 11.04</a><!-- (2)--></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>
<h3>相关文章</h3>
<ol>
		<li><a href="http://www.agilephp.net/2010/01/solve-error-550-in-centos-and-vsftpd/" rel="bookmark">CentOS配置vsftpd遇到550错误的解决办法</a><!-- (2)--></li>
		<li><a href="http://www.agilephp.net/2010/04/performance-tuning-with-jdk-tools/" rel="bookmark">使用JDK进行Performance Tuning</a><!-- (2)--></li>
		<li><a href="http://www.agilephp.net/2011/05/grub4dos-ubuntu-11-04/" rel="bookmark">使用Grub4DOS引导Ubuntu 11.04</a><!-- (2)--></li>
	</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.agilephp.net/2010/01/refactor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

