新的希望,新的明天

按月份归类: 2007-08

时光飞逝

当年刚学会说话不久的孩子,现在已经在QQ上与我老到交谈.
6年了,眨眼间就已经过去6年了.

DNT是discuz的又一"力作",前些时间还发布了源代码,为向"开源"迈进踏出坚实的一步.通过仔细阅读它的源代码,分析整个项目的结构,可以令人思维能力上升到一个新的高度.下面我们就来解剖一下这个"力作"吧

使用visual studio 2005打开工程.出现在我们眼前的结构令人顿时有庞然大物扑面而来之感.花了不少时间适应了它的"结构",就想先来看看Common里有什么吧.由于篇幅有限,我们就只挑了一两个地方出来和大家共赏了

首先,从结构上来看,它把一众输入输出的操作封装到Common里,例如Request,它给我最大的感觉就是HttpContext无处不在.这就好象你封装了一个类,然后又在类的内部使用类外部的变量/方法等等.大家觉得这种封装有意义么.由这个地方,我们可以深切地感受到如何创建一个有意义的类,如何设计你的类使它具有良好的输入输出接口并有绝对的外界无关性.这是一个很好的反面例子.

接着我们再来看Utils类,咋一看此类内容,我恍惚以为自己在看asp程序代码,封装了一大堆对字符串的操作等等,美其名曰:工具类.当然,这个类里还是少不了HttpContext的.呵呵
在这里,我们又学到了一样东西,不能归为一个物体拥有的方法或属性千万不要强归在一起并拼凑出一个也许并不存在的物体

打开XmlWriter.cs,一开始我还以为和我朋友一样,因为XmlDocument的性能较低,所以选择了自己封装Xml操作对象呢.一看才知道是为了其他目的封装了一个大杂烩,其中既有一个内部的XmlDocument实例,又有其他毫无关联的属性和方法.更有甚者,它又定义了一些类似XmlDocument对象自身方法的方法,例如AppendChildElement等,在这些方法里又有传递XmlDocument对象参数.伟大的先辈们教育我们:要扩展一类物体功能,不能以改变物体来达到目的,所以我们需要继承

由于时间的关系,就先这么多吧,至于其他的string to int不知道用int自身方法
甚至还到处使用new Regex这些就不说了.分析到这里我已经有了80%的asp意味
唉,由此可见,能吹牛往往比能学习的更吸引别人注意的.

故事的角色

我不要在破碎的镜头里接受
你的逃避和存在
我从冷漠的角度望去
含泪的眼
该如何表白
现在的记忆
好像一场演不完的戏
让我们
都看得见过去
我知道故事里的夜
在为谁叹息
我知道故事里的梦
为何不再美丽
因为你已不是你自己
何必告诉我要忘了你
故事的角色
消逝在记忆里
加上xml:space="preserve"属性就可以了.