你有沒(méi)有試過(guò),當(dāng)你踏入一個(gè)新的公司,看到了幾千幾萬(wàn)幾十萬(wàn)代碼的時(shí)候,那種崩潰的感覺(jué)?
代碼多不可怕,怕的是代碼的可讀性、維護(hù)性、擴(kuò)展性是如此之差,這時(shí)候該怎么辦呢?
當(dāng)我進(jìn)入了新的公司,利用了一個(gè)星期去熟悉代碼,也知道了各個(gè)開(kāi)發(fā)的編程習(xí)慣,在一個(gè)大公司里,沒(méi)有一個(gè)規(guī)范的編程寶典,出來(lái)的就是這種大雜燴,但作為另一個(gè)開(kāi)發(fā)的我,該怎么做呢?順著他們的開(kāi)發(fā)思路繼續(xù)寫(xiě)這種代碼?
No,It’s Not My Style!
該如何進(jìn)行慢慢重構(gòu),等到一定階段去跟領(lǐng)導(dǎo)說(shuō)呢?
1、把現(xiàn)在的hard code統(tǒng)統(tǒng)整理一下,這種小改動(dòng),相信任何一個(gè)LEADER都不會(huì)反對(duì)的吧。
針對(duì)不同的hardcode要有不同的解決方案,如果hard code僅對(duì)本類的話,請(qǐng)?jiān)诒绢愔惺褂胮rivate const,如果跨越多個(gè)類的,請(qǐng)不要怕麻煩,添加一個(gè)類,把這些都設(shè)置進(jìn)去,當(dāng)然,盡量把這些硬編碼的使用歸類。
public class Example{ public void ExampleMethod() { //var name = "jamesying"; old class //private string var name = MyName; //public string var pname = PublicString.MyName; } //if jamesying only in this class you can private const string MyName = "jamesying"; }//if jamesying is a public stringpublic class PublicString{ public const string MyName = "jamesying"; }
2、超過(guò)50行的方法,進(jìn)行小重構(gòu)。超過(guò)50行就另外建個(gè)方法,相信這個(gè)也不會(huì)反對(duì)吧。
public class Example{ public void ExampleMethod() { if (....) { //old more than 50 lines