设计匠艺 | 清晰的设计意图

如果你不能清晰地表达设计意图,追求简单无疑就是一个笑话。语言的纠缠不清,实则暴露了你思想的混乱,就像行走在陌生城市的异乡人,城市地图成了他唯一的指路明灯。糟糕的是,地图用唯一的色彩试图简单阐明简单的本质,却因为缺乏清晰的层次感让人变得无所适从。当然,还有一个重要的原因,城市本身是一种混乱的复杂。

不能简单地阐述设计意图,就有他人无法理解系统的危险。架构最好是不言自明的,至少,也是能够用语言表达清楚的。正如爱因斯坦所说:“如果你不能向一个六岁小孩解释某件事,那么你自己就没有真正理解它。”架构是团队知识传递(分享)的重要部分。聪明的做法是在架构过程中选择遵守一种设计原则,并运用一种或多种一致的模式或风格。

Ruby On Rails之所以能够得到普遍流行,正是基于这一原因。它的整个设计意图可以由“惯例优于配置”原则和MVC模式来阐释。

Rails的目的很单一,就是基于MVC模式打造一个敏捷的Web框架。Model、View与Controller之间的关系其实暗含了一种契约,并且这种契约关系是相对不变的。不变的内容总是可以通过某种方式在架构中固定下来。传统的设计方式是运用接口来稳定架构,前提是我们需要寻找到不变的契约是可以抽象的,然后再将扩展交给实现类。

Java多线程编程中的Runnable接口的设计体现了这一点。而在函数式编程语言中,这种不变性则透过基本的函数来体现,再以组合子的方式满足变化的需求。

Rails是另一种钳制变化的方式,它将契约视为一种惯例,以运行时的动态组装取代静态的配置。表面上施加了约束,限制了灵活,事实上这种牺牲换来的是无与伦比的简单之美。

UNIX的设计意图是一种哲学,即“Keep It Simple Stupid”,正是遵循了这一设计意图,UNIX才取得了成功。

你的设计意图清晰吗?

虽然Spring是Rod Johnson在几个商业项目中运用J2EE时,逐步演化出来的框架,但它的设计意图在整个演化过程中却始终如一地坚持:摒弃EJB的笨拙,转而以轻量级的框架与容器。

Datomic数据库的架构意图极为清晰,就是要创建一个不可变的数据库。“Datomic将数据库视为信息系统,而信息是一组事实(facts),事实是指一些已经发生的事情。鉴于任何人都无法改变过去,这也意味着数据库将累积这些事实,而非原地进行更新。虽然过去可以遗忘,但却是不能改变的。因此,如果某些人“修改了”他们的地址,Datomic会存储他们拥有新地址这个事实,而非替换掉老的事实(它只是在这个时间点被简单的回收了)。这个不变性(immutability)带来了很多重要的架构优势和机会。”

意图是一种导向,在架构层面,意图体现为根据架构目标遵循设计原则做出的架构决策。

原文发布于微信公众号 - 逸言(YiYan_OneWord)

原文发表时间:2014-09-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程

计算机编程新人入行指导

自加入公司以来,已经有6年的时间了,并且已经从一个新的电脑软件开发人员变成了一个老人。公司里有几个不同的项目,一些新同事会加入项目组,会有一些混乱和问题。这里有...

1877
来自专栏九彩拼盘的叨叨叨

写给初来简书的朋友

一转眼,我在简书写东西已经 3 年多了。在这过程中也收获了很多。因此,我也常推荐别人来简书上写博客。

773
来自专栏养码场

《王者荣耀》技术总监复盘回炉历程:没跨过这三座大山,就是另一款MOBA霸占市场了

来听听邓君站在技术视角对《王者荣耀》内部的解读:《王者荣耀》如何从从立项之初经历的惨淡时期到华丽的翻盘;它实际原理、问题和优化的思路,和现在见到大部分不同的技术...

1172
来自专栏服务端技术杂谈

要成为一个 Java 架构师得学习哪些知识?

既然java架构师, 首先你要是一个高级java攻城尸, 熟练使用各种框架,并知道它们实现的原理。 jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;...

2856
来自专栏精讲JAVA

想要成为顶级程序员必须具备的思维,学会了少走三年弯路

《THe Effective Engineer》的作者Edmond Lau采访了很多硅谷顶级科技公司的顶尖软件工程师。他发现这些给世界带来巨大影响的的工程师们至...

1938
来自专栏NetCore

SSA-一种适合中小型企业的新型服务架构

2560
来自专栏养码场

干货领取!Java架构体系学习路线图,这6点技术人一定要知道!

可以说,Java是现阶段中国互联网公司中,覆盖度最广的研发语言,掌握了Java技术体系,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能有立足之地。

952
来自专栏互扯程序

Java架构体系学习路线图,第6点尤为重要!

可以说,Java是现阶段中国互联网公司中,覆盖度最广的研发语言,掌握了Java技术体系,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能有立足之地。

1203
来自专栏BestSDK

10大云存储平台技巧

何选择云迁移策略?   将数据迁移至云中时,选择一个适合组织需求的策略很重要。随着数据迁移至云存储平台,有一些因素需要考虑,如你是否迁移了归档数据,他们具有不同...

4126
来自专栏钱塘大数据

【推荐阅读】顶尖数据工程师的五种思维模式

《THe Effective Engineer》的作者Edmond Lau采访了很多硅谷顶级科技公司的顶尖软件工程师。他发现这些给世界带来巨大影响的的工程师们至...

3427

扫码关注云+社区