Skip to Main Content

Chinese

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

我眼中的程序设计

702619Mar 14 2008 — edited May 21 2008
有人叫嚣,“什么样的程序问题我都能解决!”,我知道他是一个合格的程序员了。
有人大喊,“我会使用各种流行技术,有技术问题只管找我”,我希望他能作我的技术经理。
有人说,“作系统就像织毛衣”,这是我一个朋友说的,人才,非常细心。我当时也有同感,
我也要把我对软件设计的看法说出来,管他对不对呢。去他的中庸。没有狂热偏激哪里来的淡定从容。
理想的软件设计。
第一、 需求被确定了。
这种确定只是在历史的一个瞬间里,它被确定了,至少我们认为只能先这么定了。需求其实是变动的,虽然没有 “两只脚不可能同时踏入一条河流”那么夸张。但是它总是在不断的变化,有时快,有时慢,有时向东,有时向西。大多数的时候,变化都会让你很恼火甚至愤怒。不过慢慢的你就会适应的,慢慢的就习惯了,就像加班一样。我们承认了他,不再和它正面为敌。我们在考虑怎么对付它,如果可以少加些班也好啊。
需求的变化为软件的设计提出了更高的要求。它也使软件设计与其他的设计有些不同。能够更好的应对变化成了人们讨论软件设计的主题。我忽然想起了“开闭”原则,太可笑了,什么样的设计能够只对扩展开放而对修改关闭啊。你做出过真正符合开闭原则的设计吗?不过,开闭原则还是像一盏灯塔样的指引着我们,让我们不断的向着这个方向努力,向着它前行。 它是一种理想状态,就像我提出的软件功能划分一样。
第二、 软件功能的划分
把软件的功能分开。分成一个树型的结构。树叶是最基本的原子功能,它的复杂性要达到一个入门级程序员可以处理就可以了。复杂的程度决定层级的多少你可以把这个叶子想象成一个函数,不过最好是不要超过30行的函数哦。树的每一级别不要太多,我觉得7、8个就比较好。比如说我们看到一个系统被分解成这样:“它是由5个子系统构成,第一个子系统包括10个模块,第一个模块要实现7个功能,第一个功能由这样5个函数实现。”然后你定义每个层级上的几个节点怎么互相的交互,怎样协同运作,完成上一级别要求它们达到的功能。注意,不同层级的节点一般不要相互通讯,就像包头市二里半村的村长不会和呼和浩特市市委发生什么关系一样。也许说,这样太复杂了吧,怎么像是叫兽说的呢,我的系统一共就那俩功能,掰一个手的手指就数清楚了。如果那样的话,你就别作设计,要不老邢抽你脸(见《谁给灶台作设计,小心老邢抽他脸》)。如果软件开发面临“复杂性”这个问题的话,那么设计就是为解决这个事情而来的。子系统,模块,功能,都是我们起的名字。国家主席,省长,市长,县长,村长。同样是不同层级上的名称,组织的方式同样是一个树型的结构。树型的结构让我们逻辑清晰,让我们把复杂的问题简化。
第三、 把系统的一些功能也加进去
内部的功能和外部的功能都是功能,都需要划分在这颗功能的树中。比如日志统计,系统消息中心,系统安全处理。把这些散落在角落中重复了n次的东西都统统的归整出来。
第四、 让你的系统可扩展
如果你把这颗功能之树构建出来了,你的系统的扩展性一定不差。这些扩展包括对已知未来需求的扩展和未知需求的扩展。当新的功能需要增加的时候,你无非是要找到这个新的功能属于那个层级的节点。他对这个层级其他的节点有什么影响,其他节点可以为他作什么,它可以为其他节点作什么。这简直就要完美了。如果你再有些艺术的细胞,有些哲学的思想。正确的用些技巧,比如设计模式什么的东西。那这个系统王国就在你的脑海中了。――“我的电影已经完成,就差把它拍出来了。”
第五、 现实中如何应用
模特的衣服在大街上没法穿。概念车没有消费者买。过度的设计和没有现实条件去完成的设计都不是老板们需要的设计。上面的设计只是我的一种理想。在条件允许的情况下,你作一点这样的设计,就会尝到些甜头。多作一些就多些甜头。
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jun 18 2008
Added on Mar 14 2008
18 comments
2,669 views