坐井观天谈Windows桌面应用程序开发中的MVC架构(一)之个人开发之路

刚刚毕业的时候从第二份工作开始就进入了Windows桌面程序开发中,从此一如侯门深似海,多次徘徊在进入服务器端开发的门口,却始终没能迈进去。刚开是写基于MFC的UI写到崩溃,经常是一个很简单的界面效果,基本上要找遍各种资料才能勉强实现,因此特别羡慕那些做服务器开发的同事。写客户端程序开发写到吐也没有转入到服务器开发,最近正在学习Java,很有可能从此放弃Windows桌面程序开发,所以在此尝试对长达8年的Windows桌面应用程序开发做一个总结。

最早接触MVC这种软件架构模式的时候是从接触MFC开始的。在学校的时候就买了一本侯捷的《深入浅出MFC》,那个时候看这本书的感觉就像是刚刚学会26个英文字母,却拿着一本英文原著在读一样。直到后来听了一个VC++的视频讲座,才算是正经的知道了如果做一个MFC的应用程序。而侯捷的《深入浅出MFC》我基本上再也没有翻开过了(惭愧……)。后来到从MFC到WTL和DuiLib,再也不想再返回那噩梦一般的MFC了。

基本上我在使用MFC和WTL的时候是不理解MVC这中软件架构模式的。对MVC的概念早就理解了,因为从网上随便找找资料就能知道Controller、View和Model是干什么的。但是真正的开始理解并将软件写成严格符合MVC的架构,非常惭愧的说,基本上是已经做了5年的Windows程序开发之后了。

做Windows客户端开发这么久,基本上道路是:UI->业务逻辑->底层第三方库的封装使用。刚开始几年接触的UI部分多一些,后来因为实现UI效果快了(UI的重用性更大,基本上从一家公司换到另一家公司,UI部分还是能继续使用的),就开始逐渐写一些业务逻辑层的东西,最后慢慢的开始做第三方库的封装使用。

那段经验不足而有没有高手指导的时期,基本上写的程序是没有Model层的。当然也知道把一些共用的操作写到一个类里(理解了面向对象就能知道如何写一个类,但是面向对象解决不了软件开发的架构问题)。因为不理解MVC,所以基本上写出来的软件都是低内聚、高耦合。只是后来慢慢的开发经验越来越多,能稍稍的将低内聚、高耦合写到中内聚,中耦合。

幸亏在学校读书的时候就看过《高质量程序设计指南》,后来刚毕业就看了《Effective C++》,所以写的代码还能看。在此建议刚毕业或者在校的学生就读读者两本书,当工作经验不足、项目经验不足的时候,基本上还能保证写的代码质量不会太差。《Effective C++》和《More Effeictive C++》要仔细地读,理解的越多越好。

从软件架构的角度去看,前5年写的那些软件基本上就是浆糊了(实际上也真没写过什么拿得出手的软件)。那个时候经常对产品侧要求修改业务逻辑而愤愤不平,因为只要有一点小的改动,基本上整个相关的业务逻辑模块都会被涉及到,严重的时候某些需求或业务逻辑的变更会导致整个软件的重写。

所有的开发者都希望一开始需求明确、文档齐全,但这基本上是不可能的,永远都别抱怨产品经理或者老板的多变,本人已经因为抱怨产品经理和老板而吃了太多的亏。因此一个好的客户端架构会从最大程度上保证业务逻辑变更的时候需要重新开发的部分最少,从而能够从容应对多变的产品需求。

说一下为什么叫坐井观天谈MVC,因为基本上这么久都是在独立开发,刚开始被一个很好的领导(现在是很好的朋友)带着一段时间。后来基本上就是一个人在摸索着去开发了,多的时候也带几个手下,但是能一起讨论下客户端架构的很少很少了。没有在大型软件公司工作的经历,没有在大型软件项目组工作的经历,所以对MVC的理解基本上都是自己通过项目一点点的总结出来的。看过一些开源Windows桌面程序的源码,有些软件和我自己总结的一些经验差别很大。所以我基本上不知道我现在的客户端架构水平处在什么档次,就一直认为自己是个井底之蛙了。

你可能感兴趣的:(坐井观天谈MVC)