C#與代碼重構(gòu)(入門)
重構(gòu)(Refactoring)就是通過調(diào)整程序代碼改善軟件的質(zhì)量、性能,使其程序的設(shè)計模式和架構(gòu)更趨合理,提高軟件的擴展性和維護性。
單從概念少來理解重構(gòu)可能很抽象,那么通過下面的代碼來看就比較好理解了。
public class Sample { public static void main(String args[]) { int r=Console.ReadLine(); r=Convert.ToDouble(r); Console.WriteLine(4.0/3*3.14*r*r*r); Console.ReadKey(); } } |
這是一個簡單的求球的體積的函數(shù),r為球的半徑,然后通過公式計算出結(jié)果并打印到顯示屏上,但你可以看看,在沒有注釋的前提下理解這段代碼,要花費你多少時間。 |
public class Sample { public static void main(String args[]) { int radius=Console.ReadLine(); radius=Convert.ToDouble(radius); Console.WriteLine(4.0/3*3.14*radius*radius*radius); Console.ReadKey(); } } |
這段代碼實現(xiàn)的功能與上面完全一樣,但你可以比較一下兩段代碼的差別,可以看出,就只是把 r 換成了 radius (半徑),然后再看你理解這段代碼要花費多長的時間,很明顯所花的時間要少一些,應(yīng)為此時你不必去思考 radius 的含義,它就是 半徑 ,而上面的那段代碼所要表示的意義必須要通過后面的代碼才能知道 r 所要表示的含義。 |
public class Sample { public static void main(String args[]) { const double PI=3.141592654; int radius=Console.ReadLine(); radius=Convert.ToDouble(radius); Console.WriteLine(4.0/3*PI*radius*radius*radius); Console.ReadKey(); } } |
這段代碼與上面的區(qū)別在于把 3.14 換成了常量 PI ,這樣做的好處在于如果代碼中多次的出現(xiàn)了 3.14 這個值,那么通過 PI 常量來修改就顯得很方便,其次就是便于閱讀(比如:本例,通過定義常量 PI 代替公式中的 &PRod; ,而不是直接使用其值3.1415.....) |
public class Sample { public static void main(String args[]) { const double PI=3.141592654; int radius=Console.ReadLine(); radius=Convert.ToDouble(radius); double Volume=4.0/3*PI*radius*radius*radius; Console.WriteLine(Area); Console.ReadKey(); } } |
這段代碼又定義了一個新的變量 Volume(體積) 用來標識所求的面積,而不是直接使用公式本身,這樣做的好處很明顯,使得代碼的結(jié)構(gòu)更清晰,可讀性增加。 |
public class Sample { public static double VolumeOfBall(double radius) { const double PI=3.141592654; double Area=4.0/3*PI*radius*radius*radius; return Area; }
public static void main(String args[]) { int radius=Convert.ToDouble(Console.ReadLine()); Console.WriteLline(VolumeOfBall(radius)); Console.ReadKey(); } } |
這段代碼通過提取出一個函數(shù) VolumeOfBall() 來封裝求球的體積的代碼,增加了代碼的重用性,而且看函數(shù)名就可以理解這個函數(shù)的作用,省去了在代碼中添加注釋的必要,即實現(xiàn)了代碼的精簡,又使得代碼結(jié)構(gòu)更加優(yōu)上面這個例子就簡單解釋了什么是代碼重構(gòu)--即調(diào)整代碼的結(jié)構(gòu),比如一些常用的數(shù)學(xué)符號用特定的標識,一些變量在命名是盡量使其可讀性更強,能從變量名就可以
|
理解這個變量的作用,將一些反復(fù)出現(xiàn)的代碼段提取成一個函數(shù)(方法){方法名也應(yīng)簡單,易讀,能從方法名中理解這個方法的功能},盡量少的使用注釋,把更多的信息
整合到代碼中(即變量名和函數(shù)名以及一些常量名等),這樣做的好處是使代碼看起來不雜亂,更清晰易讀。
總的來說,重構(gòu)不僅僅是更改已經(jīng)編寫的代碼的結(jié)構(gòu),而且是一種思想(它指導(dǎo)我們在編寫代碼時如何使得代碼更“優(yōu)美”)。代碼重構(gòu)的作用很大,好處很多。也許
從這個例子中看不出來,當(dāng)然也許你會說通過重構(gòu)使得這段代碼的執(zhí)行時間變得更長了,效率變低了,但你可以想一下,當(dāng)你在做一個很大的工程,而這個工程有成千上萬
行代碼時,如果不注意使用重構(gòu)的思想和方法,而單純的考慮效率,那將會是一個無比復(fù)雜的任務(wù),但使用重構(gòu),不僅代碼更易讀,易改,而且節(jié)省開發(fā)時間。所以學(xué)好重
構(gòu)對我們以后的編程生涯都是有巨大的好處的。
|
新聞熱點
疑難解答