剛才在論壇上看到一個問題,其中網友有帖出一個方法,如下。過多的代碼冗余過多的if判斷。
下面Insus.NET按照自己的相法與習慣,重構這個方法,希望代碼冗余的地方,能夠簡化,需要封裝的地方,把它們封裝。
第一步,大家可以看到每個if判斷塊內,都有一句:
fileUpload.PostedFile.SaveAs(myDicPath + "\\" + fileName);
結果如下,冗余的都被Insus.NET comment out了,只留下Highlight的一句:
第二步,我們又看到每個if判斷塊內,都有兩句代碼,是判斷目錄是否存在,如果不存在,創建目錄的。
if (!Directory.Exists(myDicPath)) Directory.CreateDirectory(myDicPath);
我們可以把它封裝成一個方法:
重構之后,變成這個樣子:
第三步,這個多個if判斷塊,Insus.NET想法是,去除所在if判斷。不可能吧! 是的。看下面的重構過程就行了。在實現之前,先要把這個目錄與文件擴展名規划一下:
再寫一個方法,帶一個參數,傳入文件擴展類型名,獲取目錄名稱。
Ok,接下來,我們又可以重構程序了:
嗯,拿掉comment out的代碼,留下:
下面的內容於2013-08-07 16:25分補充:
如果真想一個if 也不想要了,可以再重構一下下面的方法:
非常抱歉,上面最后一個補充方法有點小問題,因此Insus.NET再於2013-08-07 21:56分重構一下:
即是說,找到匹配之后,馬上break foreach循環。
看看測試效果: