03 2007 档案

何以证明你的设计优秀?
摘要:我想很多人都饱受过糟糕软件设计的痛苦,因此心里总有一股气,自己一定要做一个非常优秀的设计。至少我是这样的人。近日公司的一个项目进行TR1评审的时候,在技术方案的评估文档中,我发现其第一项列出的便是上一个版本存在的设计缺陷: 产品之间复用只是停留在代码级别 模块代码不够独立,后期不能复用 模块代码不易扩展现在的新功能 由于是公司产权产品,其具体的内容不便详说。幸好我们只需要关注一下其中的重点。对,就是复用!当然了,这份技术方案中,剩下的就是自己如何解决所有问题,如何提取可供复用组件,如何架构一个好的系统。姑且不谈对本系统的设计如何,我们跳出来看看我们在做一件什么样的事。否定 --> 肯定 阅读全文

posted @ 2007-03-30 02:16 ohmyjava 阅读(174) 评论(0) 推荐(0)

探索流(Stream)的概念
摘要:从一开始接触,就感觉流(Stream)是一个非常抽象的概念。在C语言中,有三个标准流:StdIn,StdOut,StdErr。那个时候的感觉,用我的L同事的话来说,流就是一个神秘的洞。我一直在探究流的概念。到底什么是流,流有什么特点,Delphi中的TStream到底和真正的流的概念相差多少?可惜一直没有合理的答案发现。前一段时间,开始对YAML 有了兴趣。在这里也顺便对YAML 进行简单的介绍。YAML 是一个可供人阅读的数据序列化格式。其类似于XML的作用。但是其存储格式采用语言结构存储。所以其同样是机器可读的格式(方便编程)。其详细介绍,我想通过另外一篇专门介绍。所以这里之介绍和流相关的 阅读全文

posted @ 2007-03-28 23:52 ohmyjava 阅读(268) 评论(0) 推荐(0)

更坏就是更好(Worse Is Better)
摘要:我非常愿意将这个观点介绍给大家,第一是它并不被很多人所知,更重要的是它有非常深刻的内涵道理。发展历史这是Richard P. Gabriel 先生根据自己的亲身经历得出的著名论断。Gabiel在Lisp编程语言特别是Common Lisp上的著名专家。在1985~1994之间,他有一家Lisp公司,名字叫Lucid。但是运营的境况并不是很好。在1989年的一次Lucid走廊会谈中,他被一些Hackers问及为什么的时候,他开玩笑地说:“因为,嗯,更坏的就是更好的。”在几个月后的,在一个叫EuroPAL(European Conference on the Practical Applicati 阅读全文

posted @ 2007-03-26 00:32 ohmyjava 阅读(315) 评论(0) 推荐(0)

星际随想谈设计
摘要:最近在迷上了看星际直播。《游戏风云》上一直播放G联赛上的比赛,都是非常的精彩。看得多了,思绪就开始飘了。最让我有感触的就是星际大师们的各种策略对抗,大呼过瘾。想想我们的设计工作,其实也是希望很多精彩出现,刚好星际可以给我一点启示。当然了,这些启示不是技巧上的,而是方法学上的。会想起自己学星际的历史,以及现在所处位置,再展望一下星际大师们的方向。星际争霸这个游戏之所以这么火热,而且经久不衰,就是因为玩星际不再是消磨时间,那已经可以说是在玩一门艺术,而Blizzard公司精心打造着这个给大家展现能力的平台。也正是因为可以谈一门艺术,星际才具备了和设计这样的艺术进行对比。他们的方法学上必然也是有相通 阅读全文

posted @ 2007-03-23 01:15 ohmyjava 阅读(126) 评论(0) 推荐(0)

房间收拾与软件架构
摘要:首先,请允许我做这样一个对比,毕竟,这两件事看上去太没有关系了。事实上,我捉摸房间收拾这个事情的时候,压根就没有想过和工作联系在一起。可是最后竟然走在了一起。不是每一个人都需要收拾房间,但是每一个人都可以花点时间研究一下收拾房间的方法。我目前一个人住在北京的自己的房间里,女友偶尔来一下。大家可以想像得出,这种情况下,房间的状况如何。基本有两点: 房间整洁程度较低 房间保持能力较低 于是,女友每次来都很生气,我也知道后果比较严重。可是对我来说,改变这点非常难!必须要超人的毅力和决心不可。不幸的是,我却犯了重理论轻实践的错误。我开始关注女友是如何收拾房间的。刚开始的时候,她告诉我,厨房必须保持干净 阅读全文

posted @ 2007-03-18 21:41 ohmyjava 阅读(192) 评论(0) 推荐(0)

代理(Proxy)模式 vs. 代理(Agency)机构
摘要:有一天,我将设计模式中的代理模式和我们社会中的代理机构联系起来。发现他们之间有非常多的相似的地方,而且可以互相借鉴。在讨论这个话题之前,我的老板就率先指出了我的缺点。代理是Proxy不是Agency。Proxy一般指协议,和生活中的代理机构Agent是不一样的哦。不过我想说的是,所以我们才应该感叹中国汉语之博大精深,以及设计模式翻译的如何巧妙了。对比并不一定是一件快乐的事,但是对比和讨论往往可以帮助我们加深对原有思想的理解。社会中的代理机构我们先来说说我们生活中的代理。我们什么时候才会遇到代理呢?比如租房代理/商标注册代理/法律代理等等。这和理解设计模式一样,需要先看看模式的目的,也就是代理这 阅读全文

posted @ 2007-03-17 21:46 ohmyjava 阅读(418) 评论(0) 推荐(0)

Inside Object: 面向对象的发展
摘要:在我们学习了多年面向对象的思想之后,回过头来,看看面向对象是如何发展起来的,应该是一个非常有意思的事情。面向对象(Object Oriented)编程技术最先被广泛使用的语言是C++,Bjarne Stroustrup写的《The Design and Evolution of C++》(中文名: C++语言的设计和演化)中,详细地描述了如何将C语言转变成支持对象编程的C++语言。可是要真正了解面向对象的起源,还得往前追溯。Simula我经常问一个傻问题,那个时代,如果不出现面向对象技术,是不是会出现其他技术?但回顾一下历史,你或许会认为,这是一个必然趋势。只是有可能名称有所变化而已。面向对象 阅读全文

posted @ 2007-03-12 08:31 ohmyjava 阅读(164) 评论(0) 推荐(1)

Relationship Based Object
摘要:这虽然是用英文做的标题,但其真是意义,估计只有中国人才能懂。首先要说明的是,Relationship Based Object(以下简称RBO),绝对是一个新的概念。因为它是我刚刚杜撰出来的。不过我想借此,表述我的一些在OO上的想法而已。有兴趣的朋友,可以共同讨论。在说RBO之前,我想先说说中国的一个非常典型的人际处理方式:关系。有事托人找关系,没事大家拉关系。现在有人将这个说法提升了一下,叫“人脉”,表示的就是你这个人的处理世俗事情的能力。人脉越厚,越表示有能耐。于是,我突然有一个想法,如果将这个“人脉”的概念,加入到OO中去,会是一个什么情况呢?其实,在此之前,我已经和一位同事讨论过这方面 阅读全文

posted @ 2007-03-10 18:51 ohmyjava 阅读(125) 评论(0) 推荐(0)

面向对象学习史
摘要:请不要误会,这个不是在将面向对象发展史。只是说说我和几位同事在聊各自学习面向对象的过程。感觉很有意思。特意拿出来与大家分享。我最近在思考写一个系列的面向对象的文章。找不到思路,于是请了几位同事,请教他们在学习面向对象过程中的想法。下面是他们的说法。J君: 在大学里学的C语言,C++和java是自学的。 开始是理论派,视面向对象为神圣不可侵犯。 进入公司后学习Delphi,有些地方不是很习惯,比如接口 主要工作是做业务模块,经过大量开发过程后,开始感悟面向对象不是一切。 接触动态语言(python,ruby)和函数式语言(lisp,haskell),开始批判的眼光看面向对象。 不能为了对象而对象 阅读全文

posted @ 2007-03-09 13:21 ohmyjava 阅读(131) 评论(0) 推荐(0)

数据接口设计中遗漏的版本差异
摘要:我们在考虑数据接口的设计的时候,最容易关注的是数据本身的接口。简单点说,要哪些数据,我接口设计的时候就加入那些数据。在此基础上再考虑数据结构以及结构优化。这些并没有什么问题。事实上,也只有考虑这些,接口才可以基本工作起来。不过,一个设计好的接口会比一般的接口多注意一些因素,一些以后可能发生变化的因素。在好的接口中,有些接口,一直不需要修改;有些接口修改了也和原有接口兼容。一个接口一直都不需要修改,一般有两种情况:需求永远不变化;接口设计地太好了。我们几乎不敢说自己的接口设计地太好了,以致于可以肯定以后不会修改,于是我们不得不面对需求变更的问题。对于软件A1和软件B1,他们之间定义了接口F1。当 阅读全文

posted @ 2007-03-05 22:22 ohmyjava 阅读(303) 评论(0) 推荐(0)

成长需要加速度
摘要:如果说惯性维持着薪水,那么加速度代表着奖金和加薪。近来和同事们聊起个人发展问题。发现程序员(其他行业估计也是如此)一到工作一年到两年之间,就会出现一个迷茫期。不知道自己的发展方向在哪里。有些公司虽然推出了职业规划,但很多人的关键问题在于不能正确认识自己的位置。那么走哪个职业方向,便变得不能顺利掌握。在这种情况下,很多人的选择,是由社会的表现来决定的。看到管理比较好,就感觉自己应该向管理岗位发展。就像当初我们考大学选专业的时候一样,一般都会选热门专业,而不管是否能发挥自己的性格。在聊的过程中,为了强调目标的制定方式,我请我的同事,分别说出自己的优点和缺点,并将我的看法好不吝啬地告诉他。我告诉他, 阅读全文

posted @ 2007-03-05 00:20 ohmyjava 阅读(151) 评论(0) 推荐(0)

导航