自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

程序員應(yīng)知 也說(shuō)重構(gòu)

開(kāi)發(fā) 后端
重構(gòu)能改進(jìn)軟件設(shè)計(jì)使軟件更容易被理解,能幫你找到bug,提高軟件的開(kāi)發(fā)速度,所以重構(gòu)可是個(gè)好東西。所以對(duì)程序員來(lái)說(shuō),知道重構(gòu)是必須的。本文作者對(duì)于重構(gòu)這一概念,有了更深的體會(huì),一起來(lái)看。

重構(gòu)(Refactoring)就是在不改變軟件現(xiàn)有功能的基礎(chǔ)上,通過(guò)調(diào)整程序代碼改善軟件的質(zhì)量、性能,使其程序的設(shè)計(jì)模式和架構(gòu)更趨合理,提高軟件的擴(kuò)展性和維護(hù)性。

從Martin Fowler最早提出重構(gòu)的概念開(kāi)始,到現(xiàn)在已經(jīng)有很長(zhǎng)時(shí)間了,重構(gòu)已經(jīng)是深入忍心了。與其說(shuō)它是一種方法,不如說(shuō)是一種思想、一種習(xí)慣。我自己在工作的過(guò)程中也一直在使用它來(lái)改進(jìn)自己的程序,所以在此想說(shuō)說(shuō)自己的兩點(diǎn)認(rèn)識(shí)。

重構(gòu)不“挑食”

上面已經(jīng)提到,重構(gòu)不僅僅是固定的那些方法,而更是一種思想和編碼時(shí)候的習(xí)慣,所以,不管你是用那種語(yǔ)言編程,都可以應(yīng)用重構(gòu)。《重構(gòu)》那本書(shū)上的例子都是Java的,可能很多人會(huì)覺(jué)得,只有在Java、C#等面向?qū)ο蟮恼Z(yǔ)言中,才能夠使用重構(gòu)的方法,而在面向過(guò)程和函數(shù)式的語(yǔ)言中,就很難應(yīng)用重構(gòu)了。

我認(rèn)為并非如此,的確,在面向?qū)ο蟮恼Z(yǔ)言中,有很多特定的重構(gòu)方法,比方說(shuō)抽取接口、變量上移、變量下移等等,但還是有一些通用的重構(gòu)方法,可以在各種語(yǔ)言中使用。

舉兩個(gè)最常見(jiàn)的例子:重命名和抽取方法。這兩個(gè)方法不論在什么語(yǔ)言的編程下面都是非常常用的,我們也經(jīng)常會(huì)做這樣的重構(gòu)。比方說(shuō)我在使用pl/sql編寫(xiě)procedure和function的時(shí)候,就經(jīng)常會(huì)做這樣的操作。特別是當(dāng)pl/sql developer的新版本中增加了重構(gòu)的選項(xiàng),能夠幫我們更好地自動(dòng)完成重構(gòu)的操作。在這里,pl/sql這門(mén)語(yǔ)言可是過(guò)程化的,而非面向?qū)ο蟮摹?/p>

所以說(shuō),我們可以在編寫(xiě)任何代碼的過(guò)程中都可以使用重構(gòu),甚至在HTML代碼中、JavaScript代碼中等等,都可以使用,因?yàn)橹貥?gòu)不僅僅是具體的方法,而是一種改善代碼,改善系統(tǒng)的一種思想,它的目的就在于讓我們的系統(tǒng)的可讀性、可維護(hù)性更高,從而具有更好的質(zhì)量。

重構(gòu)可以隨時(shí)進(jìn)行

Martin Fowler的《重構(gòu)》一書(shū)還有個(gè)副標(biāo)題,叫做“改善既有代碼的設(shè)計(jì)”,這讓我在當(dāng)初產(chǎn)生了一點(diǎn)兒誤會(huì),還以為重構(gòu)只能是在把代碼寫(xiě)完了之后才能夠進(jìn)行的。其實(shí)不然,我們可以隨時(shí)對(duì)程序進(jìn)行重構(gòu),(我曾經(jīng)在內(nèi)部的交流中把它叫做行進(jìn)中的重構(gòu),呵呵)那樣會(huì)更有利于之后的編碼。

比方說(shuō),在編寫(xiě)程序的過(guò)程中,忽然發(fā)現(xiàn)有一個(gè)變量的命名有些不合理,我們可以立即對(duì)其進(jìn)行重構(gòu),修改名稱(chēng);或者更實(shí)用的,發(fā)現(xiàn)自己接下來(lái)要寫(xiě)的代碼完全是之前代碼的重復(fù),或者說(shuō)可以從別處copy,然后稍作修改就可以,那么我們就可以回頭把之前的方法抽取出來(lái),而在新的位置直接調(diào)用;或者發(fā)現(xiàn)想要使用某個(gè)方法,但它位于其它類(lèi)中,就可以想是否可以提取父類(lèi)或者接口,然后把通用的方法提取到其中,然后再對(duì)其進(jìn)行繼承或者實(shí)現(xiàn),那樣就可以方便地調(diào)用方法了。

還有很多很多的方法,都是可以在編碼的過(guò)程之中就可以做的,而不需要等所有的編碼完成了之后才做。那樣的好處是顯而易見(jiàn)的,在之后如果再需要實(shí)現(xiàn)類(lèi)似的功能,就可以直接調(diào)用已有的方法,而不需要等***再做調(diào)整了。

總之,越是使用,越是覺(jué)得在編程的過(guò)程中應(yīng)該始終把“重構(gòu)”的思想放在頭腦中,隨時(shí)拿出來(lái)使用。

你對(duì)于重構(gòu)是否也有想說(shuō)的話(huà)呢?

 

原文地址:http://blog.csdn.net/lingyun2005/archive/2010/12/08/6062149.aspx

【編輯推薦】

  1. 在PHP語(yǔ)言中使用JSON
  2. 快速排序(Quicksort)的Javascript實(shí)現(xiàn)
  3. Web移動(dòng)應(yīng)用 HTML5 CSS和JavaScript
  4. 高效PHP程序必知的53個(gè)技巧
  5. CSS高手也容易犯的10個(gè)錯(cuò)誤提示
責(zé)任編輯:于鐵 來(lái)源: CSDN博客
相關(guān)推薦

2011-05-31 09:22:39

程序員

2011-05-26 10:04:30

程序員

2011-05-24 13:47:25

程序員

2011-05-31 09:37:53

程序員

2011-06-02 09:56:21

程序員團(tuán)隊(duì)精神

2010-07-27 16:21:25

程序員

2011-05-31 10:50:36

程序員

2023-05-06 07:24:22

程序員視頻算法

2022-11-04 07:12:24

JavaScript基準(zhǔn)測(cè)試

2014-06-09 16:43:11

程序員

2022-09-04 19:43:05

程序員數(shù)據(jù)庫(kù)

2013-04-18 09:55:05

程序員

2017-03-06 09:06:13

2022-10-25 08:23:09

Reactor模式I/O

2024-03-14 12:17:00

數(shù)據(jù)庫(kù)數(shù)據(jù)模型

2022-12-02 07:16:29

MySQL函數(shù)日期

2019-01-30 14:14:16

LinuxUNIX操作系統(tǒng)

2011-07-25 09:14:40

程序員

2023-09-12 11:25:15

2015-11-30 11:01:34

前端程序員歷史
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)