随笔-60  评论-98  文章-0  trackbacks-0
软件设计
一些想法吧
[初探Xerces系列]DTD      摘要: 由于DTD不支持数据类型,所以必然会被能表达更丰富含义的Schema代替。

但是DTD语法简单,在多数场合够用,Schema看起来貌似不太友好,呵呵。

还是根据需要自行选择。  阅读全文
posted @ 2009-06-18 18:22 创建更好的解决方案 阅读(1100) | 评论 (0)  编辑
[初探Xerces系列]DOM Lev3 Core的关键特性整理      摘要: 总结了DOM Lev3 Core的新特性,给人印象深刻的是重命名,自举,验证内存中的文档和文档标准化。

文末对使用Xerces API验证内存中的文档进行了示例。  阅读全文
posted @ 2009-06-12 18:28 创建更好的解决方案 阅读(1472) | 评论 (0)  编辑
[初探Xerces系列]对外提供CLI      摘要: 应用程序的接口不外乎三种,CLI——命令行接口,API——应用编程接口和GUI。

因为现在有大把集成快速开发功能的IDE可供选择,因此GUI的实现变得非常的顺手。工具水平提高了,这看起来是理所当然的事情。其实呢?  阅读全文
posted @ 2009-05-20 10:12 创建更好的解决方案 阅读(1402) | 评论 (0)  编辑
[初探Xerces系列]目录结构也可以辅助提高代码可读性      摘要: 项目组曾经一度有过争论,认为目录层次过深,跨度过大(我们通常设置在3层以内),会降低编译效率。  阅读全文
posted @ 2009-05-19 17:23 创建更好的解决方案 阅读(1519) | 评论 (0)  编辑
重构故事——Chapter03      摘要: A计划1:平台版本在v2.1版本基础上进行迁移,逐个模块改造,平台1.0版本,在业务分支3.0版本之前发布,在3.x版本与其他业务版本结合;
B计划1:平台版本不再单独演进,将现在的平台技术应用到即将发布的3.0版本中。包括插件结构、动态加载、动态激活,3.0版本中的业务模块一律按照插件规范开发。
// ---------------------------------------------------------------
A计划2:CCB管理配置文件,规范插件对主界面的配置。
B计划2:必须为界面配置文件准备替代方案,防止因为配置文件损坏造成的程序加载失败。  阅读全文
posted @ 2008-08-25 16:14 创建更好的解决方案 阅读(1179) | 评论 (0)  编辑
重构故事——Chapter02      摘要: 很多模块都需要在工程打开之时,获取一定的信息,比如工程是新建的还是打开的,临时目录在哪里,工程目录又在哪里。
工程管理模块就像个奶妈,把一系列的信息从XML文件或者从用户刚刚输入的信息都进来,然后再一个个的去NotifyProjectOpen。工程关闭之时在挨个通知他们要关灯了,NotifyProjectClose。怪不得耦合度高啊,全是被动式初始化,能不高吗?  阅读全文
posted @ 2008-08-14 17:47 创建更好的解决方案 阅读(1133) | 评论 (0)  编辑
重构故事——Chapter01      摘要: 比较头痛的是:原来在工程管理器中一系列的通知机制的修改,神秘的GIS模块,还有混乱不堪的数据库抽象层。按照Eclipse中对插件式的描述,这些插件不但作为插头插在别的插口上,还对外提供插口。  阅读全文
posted @ 2008-08-07 20:17 创建更好的解决方案 阅读(1371) | 评论 (3)  编辑
C++ Builder实现可配置界面中遇到的问题【2、问题解决】      摘要: 类数量不变,因为经过分析,是因为在exe和dll之间传递VCL特有数据类型所致。  阅读全文
posted @ 2008-07-16 15:19 创建更好的解决方案 阅读(1062) | 评论 (0)  编辑
C++ Builder实现可配置界面中遇到的问题【1、问题出现】      摘要: 提供一个可配置的界面,供DLL们来注册菜单、按钮这些界面元素,界面元素所需的资源由DLL提供。DLL们需要外显的方法,绑定到自己注册的界面元素上。  阅读全文
posted @ 2008-07-15 12:11 创建更好的解决方案 阅读(1169) | 评论 (0)  编辑
温度计的寓言      摘要: 故事是这样的:有一个由5个年轻人合伙建立的小软件公司YoungSoft co. ltd,成立不久,业务不多,刚刚实现收支平衡。
一场突发的流行性感冒,使得市面上体温计奇缺,价格也是水涨船高。一个农民企业家投资50w创建的温度计公司Good Metor,一直惨淡经营,这么好的机会,自然不会放过。市场上价格最高的是一种能记录一段时间内人体温度变化曲线,并判断使用者是否患上这种可怕的流感的智能体温计Smart Thermometer。  阅读全文
posted @ 2008-03-14 20:49 创建更好的解决方案 阅读(546) | 评论 (0)  编辑
好文如风,拂去数朵疑云——Designing Qt-Style C++ APIs by Matthias Ettrich      摘要: 评价一片文章是否烂的标准是:你是否看过之后感觉不痛不痒。
一片烂文章的来由通常有两条,一是文章的烂是客观存在的,另一个就是看文章的人太麻木,以至于针尖戳背亦难觉痛痒。
这篇文章,释开了我心头的数朵疑云,漂浮如下。  阅读全文
posted @ 2008-03-03 07:59 创建更好的解决方案 阅读(1970) | 评论 (6)  编辑
我是笨人——读Rob Pike的《Notes on C Programming 》(附全文链接)      摘要: Ken Thompson —— Unix 最初版本的设计者和实现者,禅宗偈语般地对 Pike 的原则4 作了强调:拿不准就穷举
花哨的算法比简单算法更容易出 bug 、更难实现。尽量使用简单的算法配合简单的数据结构。
只要掌握了数据结构中的四大法宝,就可以包打天下,他们是:array 、linked list 、hash table、binary tree 。这四大法宝可不是各自为战的,灵活结合才能游刃有余。比如,一个用hash table组织的symbol table,其中是一个个由字符型array构成的linked list。  阅读全文
posted @ 2008-02-29 08:39 创建更好的解决方案 阅读(4379) | 评论 (4)  编辑
我和充斥臭味代码的战争      摘要: 从去年8月份到现在,我一直在从事一个261k行代码的项目(不含空行和注释)。
其中由我本人编写的代码10.9k行(不含空行和注释,我本人所写的注释大约1/8有效代码行,属于比较少的)。
TDD的老爹Kent说如果已经有可以运行的代码,这时候是不适合引入TDD的。对已经可以运行的261k行代码重新写测试用例,怕是要出人命的。我想Kent老爹说的是老代码从新TDD,言之有理,对于一个成年人你来T他的小DD,当然就要踢出大事情来。但是对于一些新模块,或者说是老模块需要彻底修改(几乎全部抛弃)的时候,年轻人吗,从小开始T他的小DD,慢慢培养,说不定能T出一个会铁裆功的模块来,到时候岂不是天下无敌了。  阅读全文
posted @ 2008-01-12 13:00 创建更好的解决方案 阅读(2189) | 评论 (26)  编辑
为软件增光添彩的小功能--DragFile
posted @ 2007-12-22 18:31 创建更好的解决方案 阅读(295) | 评论 (0)  编辑