Posted on 2005-07-25 09:18
Raistlin 阅读(349)
评论(0) 编辑 收藏 引用 所属分类:
methodology
在一个小安装程序上花了很多时间,本以为是很简单的:创建数据库,修改一些数据,拷贝文件,注册一个服务。为了实现功能,做出一个老板可接受的界面(界面都是俺先做,老大们再来定)
首先,我用MFC来创建这个工程,因为是安装程序所有使用静态链接库,项目中原来那些共用的mfc扩展dll就不能用了。而那些mfc扩展dll的工程直接使用了宏AFX_EXT_CLASS,要在其基础建一个静态库版本的工程的话,要改半天,而且我又没权限改,干脆直接拿过来修改。建议读者们在写mfc扩展dll的时候不要直接使用AFX_EXT_CLASS 而是使用自定义的宏,方便以后改成静态链接库,比如(从profuis的工程文件中copy而来)
#if (defined __PROF_UIS_IMPL__)
#if (defined _AFXDLL && !defined __STATPROFUIS_WITH_DLLMFC__)
#define __PROF_UIS_API _declspec(dllexport)
#else
#define __PROF_UIS_API
#endif // _AFXDLL
#else
#if (defined _AFXDLL && !defined __STATPROFUIS_WITH_DLLMFC__)
#define __PROF_UIS_API _declspec(dllimport)
#else
#define __PROF_UIS_API
#endif // _AFXDLL
#pragma message(" Automatically linking with ProfUIS223 library")
#pragma message(" (Professional User Interface Suite)")
#pragma comment( lib, __PROF_UIS_LIB_NAME )
#endif
其次,关于安装程序的界面一直不能定下来,已有三个版本被枪毙,最近这个总算大概定下来。程序员看待程序的方式和老总、客户差别很大,最保险的方法是模仿典型的安装程序的界面。
再次,我想抽取出几个有用的类,功能独立了,但和界面的交互麻烦了很多。简单的事情反而变复杂了。一个类的功能如何强大如何独立,总是为某个工程服务的?在写这个工程的时候还为这个类考虑太多前途,等于拿石头砸自己的脚。还有看到一些代码被拆分成一大堆函数,一大堆异常,一大堆数据库Rollback..有的事情本来是简单的,我们把它给复杂化了,有的事情本来就是复杂的,随便想给它简单化反而会更复杂。
看到mfc example和网上下的代码的时候我经常会想:什么时候我才能写得那么漂亮,把握得那么准确!