消极架构

栏目: 后端 · 发布时间: 5年前

内容简介:这是来自Michael Feathers的一篇著名文章,Negative Architecture消极架构已经被广泛传播。下面结合中国老子思想解释与翻译如下,从“无与有”角度理解“架构不做什么”反而是更好的选择:你可能以前已经看过这张照片,这是人们用来展示感知如何运作的图像;你要么看到两张脸看着对方(黑色部分);要么看到一个花瓶(白色部分)。在格式塔心理学的术语中,黑色部分成为人物轮廓(两张脸),而把白色部分看成花瓶的人则会把黑色部分看成是白色花瓶所在的背景。我们可以在花瓶和面孔之间切换,但我们不能同时看

这是来自Michael Feathers的一篇著名文章,Negative Architecture消极架构已经被广泛传播。下面结合中国老子思想解释与翻译如下,从“无与有”角度理解“架构不做什么”反而是更好的选择:

消极架构

你可能以前已经看过这张照片,这是人们用来展示感知如何运作的图像;你要么看到两张脸看着对方(黑色部分);要么看到一个花瓶(白色部分)。在格式塔心理学的术语中,黑色部分成为人物轮廓(两张脸),而把白色部分看成花瓶的人则会把黑色部分看成是白色花瓶所在的背景。我们可以在花瓶和面孔之间切换,但我们不能同时看到它们。我们大脑自动告诉我们这是人物轮廓,这是我们最先感知的对象,认识到花瓶和背景属于另外一种观察方式。

Betty Edwards 撰写 的“在大脑右侧绘图 ”一书 利用这种背景知识帮助人们更好地绘画。她的一个练习是故意不忘记的人的轮廓,当学生正在画一个人或一把椅子,她告诉学生绘制这些轮廓时要忘记他们是什么,这样,你将绘制你看到的纯粹外形,不让你的大脑告诉你它是一个人或一个椅子等对象,因为当你的大脑对其进行分类时,它总是会开始美化,我们知道一个人什么样子,大部分是根据记忆印象而不是我们实际看到的这个人什么样。(banq注:我们看到一张桌子为什么知道它是桌子?我们仅仅看到桌子的一个面就是能判断?桌子的其他三个面其实靠意向想象。)

在软件中也发生了类似的事情。我们设计的任何系统都由部件组成 - 组件,框架,库或服务。无论我们制作它们还是使用它们都无关紧要。这些部件都对我们是有用的(banq注:有以为利 有用是王道!?),这就类似于上面的人的轮廓。

那么换个角度看,什么是花瓶的背景呢?背景是这个软件不做什么的列表(banq注:“无”的列表,无与有的区别)。

函数编程的一个很好的例子是Haskell中的IO Monad。应用程序中的任何代码或者在IO Monad中 - 在这种情况下它可以执行IO - 或者在代码之外的某个地方(这样你的代码就变得纯粹),这样你可以保证你的代码就不会做IO(委托给IO Monad了),这种保证很有用,当你查看这段代码时,你就不会太费神,或过于担心(因为他不会做IO,你就不会看到做IO的代码)。

这些保证构成了一种消极的架构: 它是一系列你知道在系统的各个部分都不会发生的事情。(banq注:无以为用=无用吗?错了,守住“无”让你事倍功半)

因为,关于“能做什么”的潜在的列表是无限的,但这并不能阻止人们认为“能做什么”这种观点是有用的。(banq注:有以为利=有就有利害得失,更多人注重“有”,拥有 金钱 名利 功名,这些都是无限的,穷其一生你能拥有一切吗?)

如果您在系统中某个地方使用特定的持久性技术,那么是否能够说它仅应该在这里使用,而不用在系统其他地方使用?其他技术也是如此。

知道什么是"不能做"的事情可以减少陷阱的数量,它将架构置于坚实的基础之上。

(banq注:无胜于有!)


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Perl语言编程

Perl语言编程

克里斯蒂安森 (Tom Christiansen) (作者)、Brian D Foy (作者)、Larry Wall (作者)、Jon Orwant (作者) / 苏金国 (译者)、吴爽 (译者) / 中国电力出版社 / 2014-9-1 / 148

从1991年第一版问世以来,《Perl语言编程》很快成为无可争议的Perl宝典,如今仍是这种高实用性语言的权威指南。Perl最初只是作为一个功能强大的文本处理工具,不过很快发展成为一种通用的编程语言,可以帮助成千上万的程序员、系统管理员,以及像你一样的技术爱好者轻松完成工作。 人们早已经翘首以待这本“大骆驼书”的更新,如今终于得偿所愿。在这一版中,三位颇有声望的Perl作者讲述了这种语言当前......一起来看看 《Perl语言编程》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器