编程是一种“组合的艺术”

系统 1457 0

编程是一种“组合的艺术”

—— WPF 实例分析

金旭亮

有这么一句名言—— 政治是一种妥协的艺术 。这一规律同样适用于软件技术。就我个人的观点,软件开发在一定意义上是一种“组合的艺术”,优秀的软件工程师类似于优秀的厨师,能将一些常见的原料变成一盘色香味俱全的美味佳肴。

为何说编程是一种“组合的艺术”?且让我慢慢道来。

众所周知,在软件开发过程中,每名软件工程师都要掌握大量的编程知识,比如如何访问数据库,如何控制线程的推进顺序等,掌握这些知识是顺利进行开发的必要条件。然而,仅有这些就够了吗?仅仅掌握了这些编程知识就足以开发出优秀的软件?

在我看来,开发者还需要掌握“组合”的艺术,你必须知道在某个完成特定功能的程序中,你可以组合哪些基本的构造块,而这些基本的构造块又以何种方式优雅地组合在一起,构成一个有机的整体。

基本的构造块不仅仅指可以直接拿来复用的软件组件(或者是 SOA 中的 Service ),还包括可以在不同项目间复用的典型代码(比如如何将一个 double 类型的数字保留两位小数的典型代码段)、技术解决方案(比如各种设计模式)或软件架构(比如成熟的多层分布式组件化系统框架、基于管道的系统架构)等等。

我喜欢将软件开发中用到的构造块称为“七巧板”,而每一个成形的程序都是用这些七巧板拼出的图形。

编程是一种“组合的艺术”

1 七巧板

如何开发出好的软件,不取决于你基于什么平台,使用什么技术,甚至也不完全取决于你的技术能力和对技术内幕的深刻把握,而取决于你是如何组合这些基本构造块的。

在某项软件技术的学习过程中,你实际上完成的是“形成软件构造块”的任务,而在软件项目实际开发过程中,你实际上完成的是“使用现有软件构造块”拼“七巧板”的过程。

这个有效并且成功地“拼图”的过程,就是我们软件工程理论中有关软件开发过程与方法部分的内容。

明了这些思想,能指导我们更有效地学习软件技术。

自学的过程,就是“形成软件构造块”的过程。

开发的过程,就是“将软件构造块”组合为完成某一特定功能的程序的过程。

作为一名教师,我很关注如何帮助学生更高效地学习软件技术,培养软件技能,就将这个思想进一步地推广与拓展了:

软件技术教学的过程,就是将“软件构造块”组合为真实软件的过程展示给学生的过程 ,先让学生进行 模仿 ,然后他就学会了 创造

重要的是学会方法,而非掌握知识。

下面,我以 WPF 技术为例,展示一个教学实例。

这是一个类似于 Windows “资源管理器”的程序,完全采用 WPF 进行开发。

先看一下最初的“原型”:

编程是一种“组合的艺术”

2 MyFileBrowser 的最初版本

这是最终成品:

编程是一种“组合的艺术”

3 MyFileBrowser 的最终版本

可以看到,原始版本与最终版本实在是差异巨大,整个开发过程我设定了 10 个里程碑:

编程是一种“组合的艺术”

4 MyFileBrowser 10 个里程碑

在整个开发过程中,每个里程碑都在前一个的基础上增加功能和更正发现的 BUG

整个项目用到了多项具体 WPF 编程技术(此即“软件构造块”),以下是最重要的几项:

数据模板、资源、值转换器、数据触发器、平台调用、数据分组与排序、多线程。

解剖这样一个程序的开发过程,就能基本掌握 WPF 开发中最重要最常用的技术,并对软件“拼图”的方法与过程有直观了解。通过模仿这种迭代的开发方式,学生就能逐步掌握有效的开发方法,掌握组合的艺术,培养出必要的开发技能,最终成长为一名优秀的软件工程师。

只有在战争中才能学会战争,同样的,只有在实践中才能增长能力。

动手“拼图”吧,期待着看到能让人眼睛一亮的优秀软件作品!

=====================

载MyFileBrowser示例源码及相关文件

(注:上传了三次,第一次上传的压缩包不知什么原因损坏了,我就第二次上传。但 第二次上传的文件久久不能在首页出现,也不知跑哪去了,更郁闷的是它现在不允许我重新上传了,一上传就说:此文件已上传过!晕,不让上传你得给出原有的链接啊!现在又看不到,又不让重新上传,也不允许 上传者删除自己上传的文件……

没办法,从压缩包中移除一个文件,然后改名,修改资源描述,第三次上传。

过两分钟刷新,第二次上传的文件链接出现了,但其字节数居然为0,点击下载,报告找不着文件!

还好第三次上传的可以正确下载和解压。

上传个小文件,折腾了我近1小时。 CSDN的下载频道设计得太让人郁闷了!!!

编程是一种“组合的艺术”


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论