软件的结构与心法

一名程序员 2008-12-31 10:02:21
软件中的结构。
说道结构。我往往想到力学结构。而且想到结构是一个相对静态的,死板的东西。我说的软件结构也指的是软件中相对稳定的东西,即软件各模块之间的关系的稳定性的那部分。
但是,软件的结构真的稳定吗?做过软件开发和测试的人都有过这样的经历。比如对开发者而言,软件设计到一半,突然发现开始设计的软件的结构有问题,不适合问题域的需要和要求。或者开始时的设计很繁琐,而有一种更为简易的结构来表达该软件的结构。对于一个测试者来说,测试过程进行到一半时,发现大量致命性的错误,或者性能上的瓶颈,于是不得不考虑是软件设计上的结构可能出了问题。
对于大型软件而言,软件的结构显得更为重要。
软件的结构来源于代码的基础结构。代码的基础结构就像是一个宏观物体的分子结构。如函数,表达式,赋值语句,回调机制,多入多出结构,反馈结构,局部全体结构,全息结构。等等,可以说,代码之间的结构多不胜举。这里的基础结构的意味有点类似于设计模式的意思,但设计模式的设计粒度要大于这里的基础结构。
我这里阐述的软件结构与UML的概念还有些不同。UML侧重于代码行所表达的软件的关系。而我所说的结构,着重于从设计者、或者直接代码的实现者在设计和实现代码时在头脑中产生的一些固定的常用的思维习惯。有点类似于一个程序员的设计代码心法。
作者的目标不是站在UML图的粒度上理解软件,而是直接站在01的角度理解软件。而且,作者相信,站在01的角度理解软件,角度将更为基础、简易、灵活、博大、精深。因为所有的软件结构都是建立在01之上的。所以才在第一篇文章中提出了“用阴阳的观点理解软件”
打个比喻来说。棋手在下围棋的时候,往往在下棋经历中“体会”出一些棋局与心态之间的关系。我在这里,想说的是,程序员在编码的时候,会逐渐体会到一些代码的结构与心之间的联系。而不仅仅是代码与思维之间的联系。
从这个意义上理解一门程序设计语言,比方说C++语言。因为有“心”的作用,所以就在代码编写的过程中有一点极其重要的不同,用心赋予了代码以生命。这也就是无心代码与有心代码的本质区别。当然,这是一个理解的问题。完全是一个主观的问题。所以,若读者无“心”,是无论如何不能对这篇文章有所体会的。而且会说,我在瞎扯,不知所云。这也难怪。
其实作者也没有达到代码与心的合一的境界。但是有一些点滴体会。并觉得很有意义。所以记述下来,与网友探讨和分享。
以后会陆续根据C++语言的一些实际语言要点。举例说明程序设计语言要素与心法的理解之间的方法和联系。
因为是随写,所以可能段落之间的关系有些模糊。大家凭借感觉来看吧!但作者的意图是明晰的。

以上文章引自——http://blog.csdn.net/wangyt/archive/2008/12/16/3530535.aspx
...全文
80 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,649

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧