剛纔在論壇上看到一個問題,其中網友有帖出一個方法,以下。過多的代碼冗餘過多的if判斷。
下面Insus.NET按照本身的相法與習慣,重構這個方法,但願代碼冗餘的地方,可以簡化,須要封裝的地方,把它們封裝。
第一步,你們能夠看到每一個if判斷塊內,都有一句:測試
fileUpload.PostedFile.SaveAs(myDicPath + "\\" + fileName);
結果以下,冗餘的都被Insus.NET comment out了,只留下Highlight的一句:
第二步,咱們又看到每一個if判斷塊內,都有兩句代碼,是判斷目錄是否存在,若是不存在,建立目錄的。spa
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循環。
看看測試效果:
3d