摘要:
读罢《测试驱动开发的艺术》,忽然想起中国传统文化中的“道器之辩”。《易经》曰:形而上者谓之道,形而下者谓之器。中国的传统文化常常是重道轻器,认为道本器末,即道是根本,其他一切是道的外在表现,器是道的从生与从属。这就导致我们常常喜欢把“道”与“器”割裂开来,一味地重视过度抽象的“道”,进而形成一种形而上学的玄幻,使得“道”高高在上,未能落于实处。重道轻器给传统文化带来的缺失告诉我们,“道”与“器”应... 阅读全文
摘要:
面向对象设计的一个重要分析方法是利用对象的职责来驱动设计。对象有了职责,才会成为具体拥有意识的对象,成为对象社区中可以独立完成,或者发出指令委派别的对象协作完成职责的一员。将对象看成是“具有职责的东西”。对象应该自己负责自己,而且应该清楚地定义职责。这就是对象设计的关键。好的软件设计者应该像牧羊人一般放牧自己的牛羊,只需要给它们一片丰沃的草地,它们就能自己觅食生活。 Rebecca认为:对象在履... 阅读全文
摘要:
作者:侯伯薇 终于阅读完了张逸先生的《软件设计精要与模式》一书,掩卷沉思,书中对于软件设计这门学问的理解和阐述让我受益良多,潜移默化之中,我对于软件设计的过程以及模式的使用又有了新的认识。因此,我对此书的评价是一本不可多得的优秀书籍。 不能光说优秀,到底优秀在何处呢?个人感觉有以下几点: 首先,内容不浮躁。 放眼当今的图书市场,很多书都被冠以《**天精通***》《***入门到精通》等等很诱惑... 阅读全文
摘要:
间接在分层架构中体现尤为明显,引入层实则就是引入间接性。利用间接对变化进行隔离,使得变化只能影响一层。例如在领域层与数据库之间引入数据访问层,就可以隔绝因为数据库发生的变化对领域带来的影响。 在分层架构中,我们应尽量保证在某一层中所有用到的组件都工作在同一个抽象层中,这意味着需要谨慎处理对象之间的协作,尽量避免跨层之间的调用。如果不同的层部署在不同的服务器,就会带来不必要的消息处理,增加了网络跳... 阅读全文
摘要:
抽象建立的这层间接性,解除了调用者与实现类之间的具体依赖,使得实现类可以单独变化,而不会影响到调用者。例如,当我们需要为元数据的读取操作定义对象时,好的编码习惯是为其定义一个接口: MetadataReaderServiceImpl类实现了MetadataReaderService接口,在实现中通过注入数据访问对象,完成对元数据信息的读取: 为何一定要定义MetadataReaderService... 阅读全文
摘要:
David Wheeler有一句名言:“计算机科学中的大多数问题都可以通过增加一层间接性来解决。”间接代表着迂回。世间没有哪一条道路是完全笔直的。蜿蜒曲折的道路并非出于美的灵感,不过是因为我们需要绕开路途中的障碍罢了。 我们在设计中遇到的最大障碍,无疑就是变化。若能御变化于实现之外,软件开发就会变得美好。 应对变化的要诀是隔离。设计者需要界定对象的不变部分与可变部分,然后将可变部分隐藏起来,即使发... 阅读全文
摘要:
福尔斯特说:即将来临的一天,比过去的一年更为悠长。可是这即将来临的一天,无论多么的悠长,终究会流入过去的长河中。把握过去,或许可以成为另一种永恒。回眸过去的2010年,架构的发展或如花开花落如此的相似,却又如人来人往如此的不同!软件技术正是在这样一种变与不变中艰难的演进。透视InfoQ中文站架构社区在这一年中的热点,或许能帮助我们抓住架构发展的脉络。如此,在即将来临的一天,我们才不会产生面对未来的... 阅读全文
摘要:
是否有程序员奢侈地想过,加入这样一个团队:那些世界上顶尖的架构师坐在你的身旁,与你结对设计;或者当你遭遇难题时,亲自为你指点迷津;或者在架构评审时,为你点评架构的优劣。他们态度优雅,行动举止之间透露出Geek的风范;他们不厌其烦,展现出非凡的技艺。他们作为你的导师,言传身教传承着优良的软件工艺。这些顶尖的架构师或者声名显赫,或者技术超群。他们是Neal Ford,Michael Nygard,Bi... 阅读全文
摘要:
架构我眼中的Visual Studio 2010架构工具基于消息与.NET Remoting的分布式架构设计领域驱动设计实践解除具体依赖的技术期待的接口软件隐喻的本质与模式虚方法的使用依赖之殇敏捷解开最后期限的镣铐印第安人的灵魂——敏捷回顾在Scrum中实施敏捷建模重构避免复制与粘贴改造面向过程式设计利用多态重构为带参方法备注:我将持续维持此文章资源列表。 阅读全文
摘要:
《重构之美》之五 使用面向对象语言进行过程式设计的例子,可谓俯拾皆是。看这段代码: 这段代码很清晰,分别执行了对学校、年级与教师信息的同步。一目了然,似乎没有什么问题。然而,如果深入阅读各个同步子方法,就会发现某种坏味道,那就是重复代码。 当然,真实的代码更加复杂与混乱,但如果经过一系列重构,例如Rename Method,Extract Method之后,就会变得逐渐清晰,大体结构如上述展示... 阅读全文