這篇文章的出現源於跟同事的一次爭吵,其中爭吵的主題是關於軟件中一些控件的顯示風格的問題,主要包含下面這些情況:
1、Lable控件的對齊方式,是否在Label控件的Text最后加上冒號,也就是“:”;
2、ListLiew控件列頭文字對齊方式、是否顯示網格線;
3、……
一個項目多個人開發,自然會出現多種不同的風格,但是蘿卜白菜,各有所愛,最后做出來的軟件是樣式萬千啊,這樣做出來的東西讓人用了如何爽的起來啊,用戶還不得開口罵人啊?
但是一個軟件下來,控件都有幾百個,如何一個一個的去改風格啊,到時候軟件是改好了,用戶不罵人了,估計程序員開罵了,nnd,這是個什么事兒啊?
有時候感覺懶人在這個世界上還真有他的一片天空,如果能夠一個方法來解決所有的這些問題該有多好啊,想着想着,眼前一亮,還真有,如果在每個UserControl,或者Form的PreRender方法中進行一次多所有控件的遞歸遍歷,然后對相關的控件做相應的處理,大概代碼如下:
2 {
3 if(ctrl is Label).....
4 if(ctrl is ListView).....
5 }
這樣似乎從一定程度上簡化了程序員修改代碼的難度,從一個個的去修改控件的屬性,變為通過代碼循環處理來修改控件的屬性,但是隨之而來又會面臨一個問題:本身遞歸就是一個很影響性能的操作,但是如果有控件嵌套使用的話,會出現對同一個控件進行多次控件遍歷的情況,這樣的話對性能的影響就更大了。
有沒有辦法可以躲開重復遍歷的問題嗎?答案是:有的!
如果我們寫一個UserControl和一個Form的基類,然后只在這兩個基類中編寫控件遍歷處理的操作,然后讓所有的UserControl和Form都繼承這兩個基類,這樣完全可以解決前面的難題,同事代碼量也會減少很多。
總結:到這里,我想文章的意思應該與題目“項目開發之底層對象抽離”相呼應了,那就是:為了便於對自己寫的所有代碼做一個統一處理,最好的方法就是盡量將同一類對象抽象出來寫一個基類,然后在基類中來做統一處理即可。想想我們平時都會有哪些對象是可以抽離出來的呢,我這里舉幾個例子,或許還有很多,留待慢慢發現:
1、所有UserControl基類
2、所有Form基類
3、實體類基類;
4、實體類字段基類;
5、所有功能組件;
ASP.NET開發技術交流群: 67511751
另:本人想找一些志同道合的人,可以是跟我一起交流技術的,或者是給予鼓勵和支持的,非誠勿擾,謝謝!
QQ:1054930154
