正在阅读:《编程高手箴言》读后感(1)《编程高手箴言》读后感(1)

2004-04-05 10:08 出处:CSDN 作者:seacloud 责任编辑:sdq

  任何一个软件一定都是跟一个平台相关联的,脱离平台之上的软件几乎都是不能用的。
=======================================
  不知道《箴言》所谓的平台只什么,开放源码领域里很多程序都是跨操作系统和硬件平台的。为什么我能这么说?很简单,C可以跨硬件平台和软件平台,很多库在设计的时候就考虑到了不同的软件平台,所以在这样的基础上写出跨平台的软件再直接不过了。再比如,Borland就声称Win32上的Delphi程序几乎不用修改就可以跑在Kylix/Linux上。

  一个很普通的程序员,如果他能够考虑到将程序分成好几个动态库,那么他的思维就已经有点开放性了,就已经不是MFC那些思维方式了。
=======================================
  软件用DLL实现就叫做有开放性思维了,原来这么简单啊,呵呵。 MFC好像重来也没有限制过你在程序里用DLL吧,连动态连接的MFC程序里都要求目标系统里有MFC动态连接库啊。VC向导里好像也有生成DLL的Wizard吧。

  你看MFC的思路,那就是一层套一层的,要把所有的类都实现了,然后继承。他从CWnd以后,把所有的东西都包含进去了,然后组成一个巨型的类。这个巨型的类连界面到实现系统都包括在里面。这时你怎么拆?根本没有拆的方法,这就是封闭式思维。
=======================================
  继承,当然就是一层套一层了!MFC作为一个Framework,实现很多的类有什么希奇的?我们看看MFC的类图,好像在CWnd下面还有很多继承关系吧? CWnd作为对Win32里window的抽象,其复杂性是天生的,因为win32的概念里窗口本来就是个复杂的概念,里面设计各种各样的资源的管理,自绘,消息处理等等。至于说道拆分,我看很容易啊,我实现个新的窗口类我就从CWnd派生,不是窗口类而要支持什么Serialize之类的,那么我就从CObject派生。
  要么我就干脆自己实现自己的类层次体系。像BCGSoft的基于MFC的界面库就是大量的用自己的类去替代MFC,也没听他们抱怨说MFC没法扩充啊。

  每个小函数出错的几率就会很小,那么组合起来整个程序出错的几率就很小。
=======================================
  软件设计的一个讨厌的地方就是有时它不是简单的1+1=2,我们常常会说联合调试,如果真的小部件OK,大系统就OK,我们干吗还需要联调啊。对于函数拆分的原则,可能没有个普适的并且能付诸实践定义。但是在设计的时候心中尽量想着软件工程里面的那些原则,比如什么松耦合之类的总是没错的。

  动态库,包括它的代码和数据都是独立的,绝对不会跟其他的动态库串在一起。但是如果你把所有功能放到一个EXE工程里,他的数据和代码都是放到一起的,最后产生可执行程序的时候就会互相干扰。
=======================================
  谁说不会相互干扰的,别忘了,一旦DLL被加载了,它就会映射到你的程序地址空间里面来。一度大家讨论的很多的DLL注入大法不就是DLL干扰宿主程序运行的典型吗?当然这种干扰有良性和恶性的区别罢了。

察看评论详细内容 我要发表评论
作者笔名简短内容 发表时间
:

键盘也能翻页,试试“← →”键

相关文章

关注我们

最新资讯离线随时看 聊天吐槽赢奖品