这篇文章的出现源于跟同事的一次争吵,其中争吵的主题是关于软件中一些控件的显示风格的问题,主要包含下面这些情况:
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探