读Agile Software Development感想,附“薪水支付案例研究”的C#源代码

一直以来都没什么时间可以静下心来学习一些知识,想想软件工程方面比较欠缺,最近有点闲暇去了趟图书馆,看到了Uncle Bob的Agile Software Development-Principles, Patterns, and Practices,对这书有点印象,就借来了。

回到家里拿起书来一看,就放不下了。这本书写得的确不错,正如标题所言,Principles, Patterns, and Practices,三者相连,通俗易懂。很久以前就看过了UML和GoF的设计模式,书应该是经典的,但觉得对学习的作用却不是很大,比较理论化,对启迪很有作用。看了这本书,再回过去看看UML和设计模式,就会觉得更为明了。

关于设计模式,以前看GoF的大作时,就发现有一些模式其实已比熟悉了,以前研究过mfc的应该就碰到过一些了。GoF的书对各种模式进行了整理和提炼并加以说明,但我当时只觉得搞得那么复杂,头晕啊。

关于UML,以前也经常会关注和学习,但总是不能应用,还是自己的方法来得顺手。

想明白了,也就一个道理:学以致用。当你的层次没有达到一定层次,那么该领域的知识对你来说就会是一种可望不可及的东西,只有等自己到了这个层次,才会发现这些知识多么有用。当初的我,在分析设计领域的了解太低,无法应用相关的知识。层次的提高,最好是有个师傅教导了,这本Agile Sofware Development对我来说是个不错的师傅,让我知道了设计的过程和理论的应用,对照以前的经验,时常让我有所领悟。分析设计的方法论有不少,Bob大叔讲的这种还是比较对我口味,比以前那种以实现功能为目的,杂凑式的设计要好很多了。

作者建议在学习这本书时,要仔细地学习书中的代码。我这样做了,并深以为然。书中有一部份讨论了“薪水支付系统”,作者网上的代码是C++的,我一边学,一边做,用C#重写了一遍。虽然对该案例的设计还有很多疑问的地方,但对于案例所涉及的设计还是有了比较好的理解了。

在这里我附上“薪水支付系统”的C#代码,是vs2005ts的工程,原书中是C++代码。我估计应该比较容易改为NUnit+VS2003的,我在项目中只用到了极少的C# 2.0特性(当时图方便啊,vs2005ts啥都有了,就懒得装NUnit了,这下好了,绑定到vs2005了,要改到vs2003上用,怎么着也得花点工夫了)。

薪水支付案例C#代码