何時進行重構?

很多人可能會覺得項目初期的時候,可以先不考慮重構以及優化, 正如我當前這個項目就是這樣做的,但是,最終的結果是什麼?出現了一種比較悲劇的場面, 面對着複雜的類、函數、基類與派生類之間的耦合度過高,派生類的重複性,內聚性高低,都慢慢的暴露了出來,當項目完成之後,在想着重構的時候,會發現連自己寫的東西都懶得動了。爲什麼會導致這樣? 原因就是前期沒有注重它(重構)。

何時進行重構,如果進行重構?

如何進行重構?這個就是一個說不完的話題了,在這裏先說說何時進行重構 

重構的意思是在不改變程序原有功能基礎上,對代碼進行優化,使程序質量更好,使代碼的可讀性更好,使程序的結構更加清晰, 這樣不僅僅是造福與後來人,對自己更是有益,當你看着你兩個月前所寫的代碼,複雜,冗長,不清晰,你自己都會噴出 “Fuck”  。

重構應該在什麼時候開始什麼時候結束?

我個人覺得重構應該伴隨着項目的始終,沒錯,在開始搭建項目的時候,就應該想到這個項目以後要如何的進行擴展、優化、如何達到耦合性更低,內聚性更高。

我們所寫的每一行代碼,每一個函數,都應該思考一下我爲什麼?出於什麼樣的業務目的去寫,往往在實際的開發中,我們也許並沒有過深的考慮很多東西,我們也並不可能面面俱到,總有遺漏點的,正如:世界上沒有沒有Bug的程序.但是通過我們的深入的思考,可以減少Bug出現的次數,並且稍微的思考多一些,那麼代碼的設計的會更好一些,從而後期的工作量也會更少一些.

重構是設計出來

爲什麼這樣講? 原因很簡單,代碼本身就是一種藝術,你寫的每一行代碼都形同與畫一幅花中的一筆一劃,最終形成的成果就是你所花的這幅畫.那麼,我們是否應該好好的構思出鼻子、眉毛怎麼樣的畫(設計)纔會更好呢?在重構的過程中,往往比我們真正實現這個功能的時候要考慮的事情多的多,在重構的同時我們可以合理的利用一些面向對象的設計原則以及設計模式,在使用它們的同時找到真正適合這個業務的模式.

所以我一直覺得我們不必特意的去學習設計模式,在進行程序重構的時候,我們在去看設計模式,這時候我們所學到的模式往往更加的容易理解.

重構需要做那些方面優化?

重構需要做那些方面的優化? 如我在重構目前的項目時主要注重一下幾個方面;

1 : 功能實現了但請求響應速度較慢.

這一點是要解決的性能問題,界面反映速度慢,找出慢的功能點,然後找出導致這一功能點慢的原因,看能否先從業務邏輯上進行優化,如果不能的話,在思考是否能有更好的辦法換一種方式達到同樣的效果,同時功能還不受到影響( 一般達到這一點了,說明你的技術能力正在逐步的提升,高級程序員與中級和初級程序員的區別就在於能否深入技術,同樣的問題,能有不同的處理方式,從而選最優 ).

 

2 : 基類與派生類之間耦合性高

在一般的開發過程中,我們往往是直接就新創建一個Class,然後,字段、屬性什麼的直接加上,然後實現。這樣在Class逐步多了之後,就會發現類中是一團糟,每個類中的耦合度很高,這樣我就需要花費點時間來好好的縷一縷了,包括如何選擇基類、類與類之間的關係(解耦)、類中的屬性。

 

3 : 冗餘的類,無用的函數、字段、屬性

查看那些類,那些函數沒有使用、確認之後清除。

 

4 : 類、函數、字段、屬性的命名

在重構的時候,會發現有些類、函數、字段、屬性的名稱自己都不清楚,那好把。修改了他把,因爲你都不明白,別人就更不明白了。

5 : 冗長的函數拆分

冗長的代碼可能功能性上沒有問題,但是對於閱讀理解上面可以是一個巨大的坑了,我們所寫的代碼一般都能被計算機所認識,但是更重要的是要被人所認識,那麼之所有削減冗長的函數,是因爲函數的代碼塊越小,代碼的功能管理就會越簡單,代碼的處理和重構也會更加的方面,複用性也較強,更加的清晰直觀.

6 :對象的使用,類的設計.

對於目前已經完成的項目來講,主要考慮以上幾個方面優先級依次遞減, 同時不建議過量的更改類的抽象層面的東西,除非這個只是一個很簡單的業務類,隻影響它本身.

爲何重構?重構會影響那些東西?

還是那句話重構就是爲了不改變原有功能的基礎上,對代碼結構進行調正,也可以理解爲是一種整理,我們所寫出的代碼,計算機是識別的,但是你能保證接下來的另外一個程序員能夠看得懂你寫的代碼嗎?你能保證你的代碼在兩個月以後自己能看的明白嗎?所以重構真正意義上是爲了程序的結構更加清晰。

重構會影響那些東西?如何的避免?

重構本身就是爲了修改冗餘,繁瑣,腐爛的代碼,對於這些代碼肯定不是那麼好理解和修改的,期間也肯定會出現許多千奇百怪的問題,例如:我修改了登錄功能,但是我首頁的數據顯示受到了影響,我重構了首頁的加載數據的代碼,從而導致我某個模塊的數據顯示不正常了,這就是我們重構了一個地方但是卻對許多地方造成了功能上的影響。

那麼如果避免這種情況或者說如果有效的使其不受到影響呢?測試、查看引用。在我們重構一個函數、或者一個類的時候,需要查看這個類或者這個函數被那些地方所引用,這些地方都是用來負責那些功能模塊的,從而在我們重構完了(或者重構的中途)之後查看相關業務模塊運行是否正常。另外就是對於業務代碼進行測試。 

 

本文是本人在開始進行重構時候一些總結,後續還會持續的更新...,如果您覺得有道理,不妨贊一個,如果您有其他的意見還請提出,畢竟個人的小小總結,或者您的回覆,就能幫助很多人解決一些正在思考或者半知半解的問題呢?


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章