以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 软件工程论坛 』 (http://bbs.xml.org.cn/list.asp?boardid=48) ---- 设计模式与美学 (http://bbs.xml.org.cn/dispbbs.asp?boardid=48&rootid=&id=26294) |
-- 作者:jiachong -- 发布时间:1/10/2006 10:07:00 AM -- 设计模式与美学 有本《Java与设计模式》,厚厚的一本,通篇都拿道家思想与设计模式类比,感觉似乎有点道理,可惜没看多久书就丢了 设计和设计模式这东西,我自己也感觉有那么点类似于美学,一个好的设计就是让人感觉美,一个功能正确但设计很烂的程序可能让人觉得难受 具体到设计模式的实现上,同一个模式可以有多种实现方法(例如模式中的每个角色由一个类担当还是几个类复合后担当,具体用什么代码元素实现等),相同的是其中蕴含的“精神”,这样说不知道算不算唯心 就像那个“软件开发是工程还是艺术”的问题,我觉得软件开发在宏观面上是工程,到微观面上可能就有些艺术成分了 |
-- 作者:jiachong -- 发布时间:1/10/2006 10:19:00 AM -- 翻出了那时候写的一篇小文章 一个好的设计会给人以和谐的感受,这就是作者所说得“质、形、无名、混 沌”,它的存在独立于人的认识。这就象模式、架构这类东西无形地存在于软件 系统中,不管人们有没有通过自己的主观去认识。经过人们认识后的“质”已经 不是原来的“质”,而是带上主观偏向的描述,也就是“混沌之死”。例如架构 被人们用描述语言描述出来之后,已经不是原来客观存在于系统之中的架构,而 是人们的具体认识,这种认识经常只包含了客观架构的某些方面。 而这种“质”是依托其最具体的实现形式“气”存在的。就象好的建筑设计 最后总是表现在一处精美的建筑(每一块砖瓦、陈设)之中。这种“气”就是我们 所能研究和具体面对的对象。这就是“理寓于气”。 怎样让“气”中蕴含优美的“形”,这就是“道”。我的理解,“道”就是 能让“气”体现出好的“形”的一些原则和方向。这些“道”一般来源于人们对 能体现出好的“质”的那些“气”的总结与抽象。就象人们认识到“开闭原则” 等设计原则能帮助我们获得好的“形”。 “形”既是抽象的也是具体的。说它是具体的,是因为它总是蕴含在具体实 现之中,例如java代码。但它又是抽象的。大家应该都有这样的体验,一个程序, 如果采用了一些不好的设计,大家会觉得不舒服。例如相同的一段代码我们在多处 拷贝而没有抽取出来,或者用了一大堆连续的if语句来识别各种特例情况,这些 都会让我们觉得不舒服(假如你还有点责任心而不是仅满足于完成代码任务的话)。 这种不舒服我觉得就是我们的抽象思维对无形的“质”的一种感知。就象我们看 到一处设计的不好的建筑,感到布置、搭配看起来很不和谐,但还没有具体的认 识到其原因所在。为了解决问题,获得好的“质”,我们还只有去努力认识“质”, 哪怕我们得到的只是一个不完整的侧面,只要这个侧面包含了足够的我们感兴趣 的信息。有了足够的设计经验后,我们就会总结出一些“道”来,例如怎么设计 良好的接口来达到设计要求,而不是把责任全部推卸到具体的代码之中。也就是 尽可能用高级的、抽象的模式来处理问题,而不是把问题的解决局限在具体的代 码上。这也符合书中所用的“胚胎的发育”这样一个过程,即系统先有整体再通 过各部分的发育得到最后的实现,而不是跨越整体的逐步细化而直接去追求最后 的代码实现。 一点思考,与大家分享一下,如有兴趣也请提一提不尽合理之处。 |
-- 作者:pennyliang -- 发布时间:1/18/2006 6:14:00 PM -- 所有的设计越是自然,越合理就越好。评价是否自然需要从人理解问题的角度出发,如果符合人理解额外难题的方式,就是自然的,否则就是不自然,评价是否合理需要从问题本身出发,是否合理的解决了问题,是否可能证明是最好的解决问题的方法。 |
-- 作者:pennyliang -- 发布时间:1/18/2006 6:16:00 PM -- java与设计模式这本书我浏览过,非常厚,理解也很透彻,是本很不错的书,可惜没有时间看的很仔细,设计模式的透彻理解需要建立在解决问题的基础上,并在过程中逐渐积累经验。提高自身认识问题的能力,然后才能照方抓药。 |
-- 作者:naive_1010 -- 发布时间:4/21/2006 1:15:00 PM -- 同意 楼上的说法! |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
46.875ms |