这篇文章的出现源于跟同事的一次争吵,其中争吵的主题是关于软件中一些控件的显示风格的问题,主要包含下面这些情况:
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