分享
 
 
 

设计模式与形式主义,我的胡思乱想

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

1年半前写的,对比着看看,现在好像自己成熟一些了:)

softarts@elong.com

7月13日到上海,16日开始上班,到现在将近两个月了,感觉还是挺充实的,甚至有点累,可能是我给自己加了太多的任务,定下太高的目标,真的好累,我决定要好好休息一段时间,顺便把个人主页更新一下,否则chinaren就要把我踢出去了.

其实今年以来一直没怎么写代码,也就是上半年3月-4月之间写过一段时间,东西都忘得差不多了。基础不牢的后果很快体现出来,以前图方便一般用的是MFC,好多Windows的特性都是一知半解甚至一点都不清楚,上个月开始重新用VC++的时候真有点一筹莫展的感觉,代码改来改去,总是不理想或存在bug,那个时候我很想去买一本houjie写的《MFC深入浅出》彻底学学MFC的,后来一想算了,MFC即使还没有到灭亡的时候,我现在也对WINDOWS环境下的编程深恶痛绝,我渴望能在一个非常自由的环境下做一些贴近底层的、有挑战性的工作,而不仅仅是懂得搭积木式的coding,于是我打消了买书的念头,老老实实的捧着《Thinking in C++》看了起来。

前不久认识了一位在公司工作了三年的朋友,他也是一位coding好手,有一次和他讨论软件内部各个模块如何组织的问题,收获挺大的。

先说我的看法吧,今年初我开始持一种在软件开发中采用类似于MS DNA结构开发模式的观点,把软件内部的各个模块分为表现层,逻辑层,数据层(注意:我说的只是一个软件内部各个C++类的组织形式,而不是一个大型系统方案的结构,大型系统方案当然都会采用三层结构),这是当时我看三星的基站网管软件文档忽然得来的一个想法。那时候我挺激动的,想着自己经历了一年多的coding生活,总算由量变到达质变,我先是在水木清华软件工程版或者是VISUAL C++版或者是Programming版上抛出这个论点,马上有网友响应我这个观点,后来好像还收进了精华区(hehe,记不清了,找不到不要骂我哦),然后我开始动手把去年底在教研室做的一个GPS-GSM车载终端监控软件按照这个思路重写一遍,把所有的逻辑处理从各种各样的View/Wnd/FrameWnd里抽离出来,形成写成一个个专用于逻辑处理的类,与文件存储有关的则被我归结到数据层上去,与用户界面有关的当然就是表现层了,这样一来,整个软件结构显得清晰很多,代码易读很多。

写完那个软件之后,我对这个想法愈加深信,我开始全面的在自己的软件开发中通盘考虑这种做法,甚至有些过了头走向极端。有一段时间,我无论拿到什么样的project都要从三层上来考虑,A层负责与用户交互,B层负责逻辑处理,C层负责数据存储,几个逻辑模块B1,B2,B3之间还存在一个通信队列,B1负责写队列,B2负责读队列......一开始我就把一个小软件的框架设计得非常庞大吓人,到了动手开始写代码后,我发现自己渐渐无法控制代码了,尽管开始我认为自己的软件结构定的很好了,但还是有很多意想不到的事情,一方面是实际情况很复杂,并不是我设计那么几个表现层、逻辑层、数据层所能解决的;另一方面是过于追求模式,什么样的东西都往三层上套,一个很小的功能,一个类就能解决的,我很硬性的分为两/三层结构,用了好几个类,尽管每个类只有一两个函数,而且这几个类之间的功能并不象所谓的三层那样区别非常明显......我热衷于模式设计,却陷入了形式主义。

有天晚上,我把自己的这个想法和那位同事交流了一下,他和我的想法差别较大,在软件内部模块组织上,他不象我那样非要以某种模式来组织软件,他并不看重软件内部模块划分的是否鲜明,他只是讲究某个类所实现的功能具备好的内聚性和耦合性,比如一个属性表,要是以我的想法,必定是一个专管逻辑处理的类,负责判断用户设置了那些属性,把这些属性存储到那个设置文件中,然后再把结果返回到表现层以反馈给用户;而我的同事的想法非常直接,就是一个类,既用于界面表现又用于逻辑处理,他认为这个类的最小功能单位就是这个,没必要再分了。又比如我写了一个显示实时曲线的模块,需要把它给别的用户用,我的第一想法就是只给用户一个逻辑接口,负责计算坐标,添加实时数据,然后用户要通过这个接口去绘图,不再另外给用户与表现层的接口绘图,我的理由是接口功能统一便于编程。我的同事对此表示不解,他认为,这个功能模块就是一个实时曲线窗口,让用户直接从这个窗口类派生出自己的类,用户想干什么就干什么,这样更好。

我开始有点赞同他的想法了,我觉得自己的问题在于有时把软件划分的过于复杂,软件设计的目的之一在于划分好清晰的功能模块,而我却为了所谓的模式把功能分得过细,七零八落的,我们开发的目的是实现软件的功能而不是为了设计模式。不过话又说回来,我觉得这可能是另一方面的原因,并不一定是自己追求设计模式的错,再过一段时间,一年或者两年,再回过头看看,也许认为这种做法是对的,这种模式是对的,只不过自己在编码经验上不足。我一直认为,一个成功的软件就是应该在设计阶段严谨、规范、全面,框架定的大,正表明考虑周到,目前遇到这么多的问题只是因为经验有限,或者说这是必然的,我想经验再丰富的编码人员也不可能面面俱到。

今天写了好多,文章太长了,下一次再写。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有