【外刊IT评论网】你知道今天是什么日子吗?

标签: 批评评论 系统设计 | 发表时间:2012-07-17 00:08 | 作者:Aqee
出处:http://www.aqee.net

你是否曾经参加过这样的会议:

发言人1:客户希望页面的背景是绿颜色的。

发言人2: 我们能确定他们会一直使用绿色吗?也许我们需要增加一个配置背景颜色的选项。

没有人反对,经理从来不参加这种无聊的设计会议,会议室里沉默了下来….

发言人3:只提供一个设置背景颜色的配置项会显得功能很弱,我们最好能提供全套的颜色配置方案。

发言人4:你是指提供多个成套配色方案,还是指让用户可以自己去配色?

发言人2(麻烦的始作俑者):当然要提供成套方案,但用户可以自主修改,这样我们就能把所有可能性都考虑进去。

讨论一直持续下去,直到他们决定开发一个拥有无数个颜色选择器和其它功能的换肤系统,而会议的收场是这样一句:

发言人6:这个系统听起来很棒,但我们应该用什么颜色作为系统的缺省背景颜色呢?

…没有人还记得:

客户指定要求的是绿色,只要绿色,没有其它颜色。

是不是有点夸张?也许吧,但我是参加过跟此类似的会议的。就我来看,我参加过的会议有的比这更糟糕,我并不想中伤任何人,因为我自己也不是个无可挑剔的人,对于这些人我就不说了。

总之,在这样的会议讨论中,很多事情都走入迷途,对于系统设计,我们应该明白一个简单的规律——遗憾的是没有人意识的这个简单规律—— 系统设计的头一个规律——一个我们应该铭记在心,在任何系统或架构设计会议上都该反复默念的规律:


今天的常量是明天的变量。

这并不是一个能够人一眼看穿的规律,但如果你能认识到几乎在所有的系统设计方面这都是一个事实的话,这能成为一个指导性的规律,它能够让你在做决定时更有信心,做出更符合实际的决定。

可问题就在于,搞技术的人大部分都不知道今天是什么日子。他们通常会犯两种错误,要么:

  1. 当所有需要做的事只是处理 今天的常量这样的简单案例时,他们却在孜孜不倦为 明天的变量做计划,评估,设计和编程。
  2. 要么,他们不明白,当“客户变更需求”时,客户的做法和任何人无异——从昨天拿来简单的东西,在今天把它变的复杂一些。

所以,你可以把这句话反过来说,“今天我做的所有事情明天都会变。会变的更复杂。任何我认为是固定或恒量的东西,将来都会变化和变成变量。”

这是什么意思?

我们都知道(希望如此),我们不应该在代码里直接嵌入常量,这会使代码很难维护。我们在头文件里定义常量,或获取外部被当作参数传进来的资源。这样能使代码更灵活,这是好事。这样的代码更 健壮,它能在不需要改动的情况下处理更多的场景。

要理解“今天的常量是明天的变量”,你首先要认识到,在我们的系统中隐藏着各种形式的“常量”,藏在我们很难发现的地方,这使得当明天来临、它们不再是恒定和常量时,你很难去修改它们。

另外一个对于这个规律要理解的事情是, 时刻记着今天是什么日子。大部分我们今天在做的东西、实现到的功能也许永远都不会再改变。人们特别容易去设想它们可能会改变,但究竟会怎样,无从得知。所以,今天常量不要把它改成明天的变量。

重回到会议上

让我们重回到最初提到的会议。下面是当人们知道“今天的常量是明天的变量”的规律后会议的进行方式。

发言人1:客户希望页面的背景是绿颜色的。

发言人2:我们能确定他们会一直使用绿色吗?也许我们需要增加一个配置背景颜色的选项。

我们的英雄:我们不知道客户是否会一直使用绿颜色,我们永远都不可能知道客户在何时会改变他们的想法,我们知道的是, 今天的常量是明天的变量。然而,我们应该把这种颜色放在CSS样式表里,而不是直接嵌入到网页里,当日后如果需要改变时,我们就很容易的做到,怎么样?

有人含含糊糊的说是的,应该放到样式表里,会议继续。

这个例子很牵强吗?

这确实是一个非常牵强的例子,会有人不使用样式表吗?会有人在代码里嵌入常数吗?

天真的孩子们,事实证明,我们并不总是使用CSS样式表。当网页开发刚流行时,CCS是一个可有可无的选项(相信我!),那时我们就是直接把样式信息直接放在网页标记里,这就是 在代码里嵌入常数,只是在不久前人们才意识到这样不正确,CSS才被人们发现。

这种事情一遍一遍的在我们身边反复发生,你想起来会感到惊奇,请找出你认为应该常量却被“埋没在代码里”的东西,请把它们定义成常量。

今天的文章是明天的承诺

关于这个话题我还会发表很多的文章,不管未来会发生什么变化,但今天我会严格按照我的计划发表。
祝好运。


本文来自 外刊IT评论网( www.aqee.net),原始地址: 你知道今天是什么日子吗?


相关 [it 知道] 推荐:

百度知道XSS漏洞

- - 博客园_首页
事情的起因是我一同学在百度知道上看到一个很奇怪的,正文带有连接的提问( 这里),正常来说,这种情况是不可能出现的. 我条件反射的想到了:XSS漏洞. 通过查看源代码,我马上发现了问题的根源:未结束的标签.
帮我写一个能提取

[译]你不知道的NodeJS

- - 掘金前端
更新:这篇文章现在是我的书《Node.js进阶》的一部分. 在 jscomplete.com/node-beyond…中阅读此内容的更新版本以及有关Node.js的更多信息. 在今年的Forward.js会议(关于JavaScript的会议)上,我分享了题为“你不知道的NodeJS”的演讲. 在那次演讲中,我向观众提出了一系列有关Nodejs运行时的问题,大多数有技术背景的观众无法回答其中大多数问题.

如何知道你是谁?

- - 改变从这里开始 - 壹心理
作者:Psychouse. 来源:微信公众号:北京心舍(ID:psychouse). 一项研究表明,拥有更好的了解自己的能力可以帮助你做出有效的决定并实现目标. 碧昂斯说:“知道你是谁,是人类拥有的最伟大的智慧. 知道你的目标,你爱什么,你的道德,你的需求,你的标准,你不能容忍什么,你愿意为什么而死.

那些你知道和不知道的千纸鹤

- Brandon - DIY - 果壳网
千纸鹤是一件经典折纸作品,理工男现在就要利用几何知识打破经典,开拓创新. 申明:本文所述作品(除最后一只翻转鹤)均属原创,如有雷同,纯属英雄所见略同. 你将需要的工具和材料有:. 10   一刀纸鹤(非原创). 12   DIYer签到处 12.1   大手牵小手. 正方形是用来折纸的一种完美形状,想要创新,首先就要突破正方形的限制.

社交搜索——百度知道,不如你我知道

- - 微博之博
本篇文章作者王德超,程序员一枚,创业在路上,微博@哀木涕啊. 当你想订购一台吐司机的时候,你会去哪儿寻找参考信息. 我想大概有许多人像我一样,习惯了使用Google 、百度或者Bing. 但他们真的会给我们最需要的答案吗. 作为一名使用微博3年以上的老围脖,突然发现自己在搜索答案时出现了另一个习惯.

推荐技术随谈,你知道的或者不知道的

- - IT瘾-dev
大家好,今天想和大家讨论下相关推荐技术通用的特点及在实践中的改进点,这也是我们团队在研发实践中一些经验总结. 首先,推荐解决主要问题是给用户在没有行为的新闻上预测一个偏好概率,然后通过概率值由高到低排序推荐给用户. 如图简单地表达了用户在新闻上的稀疏行为矩阵,通过我们会基于用户的画像特征、内容特征、上下文场景特征、用户对新闻的各种操作行为特征等对内容候选集进行排序打分.

关于xargs,你可能不知道的

- Caiwangqin - 黑客志
如果你曾经花了许多时间在Unix命令行上,那么或许你已经见过xargs了,如果你还没听过xargs,那就先让我来解释下,xargs是一个从标准输入或许参数并执行命令的程序. 我常常见到将find和xargs组合使用以对find返回的文件列表执行某些操作. 更新:根据Twitter和hacker news上的反馈,find是个很强大的命令,它自己也有-exec和-delete这样的参数可以用来执行命令和删除文件,尽管如此,如果你对find的这些选项不太了解,或是想不起来-exec那古怪的语法,那么你还是可以使用更为简单的xargs,并且xargs在效率上也更胜一筹.

我知道你为什么拖延

- Newton - 心事鉴定组 - 果壳网
经验说:事情越欠越多,都是因为拖延症. 实验说:拖延症是因为你总是无法战胜眼前的欲望. 我们在网上下载了一大堆电影、纪录片,用途却是拿来塞满硬盘,从没看过;我们买回一大堆书,准备读完这些名家大著、哲学经典什么的来充实自己,可实际上这些书跟着你回家后,放在书架上就再也没拿下来过,日复一日地积累灰尘. 尽管如此,我们仍然乐此不疲地下载一部又一部的电影,买一本又一本的书,以为未来的某天,自己会良心发现把它们看完.

我知道这个梗很lag,但……

- wyt - 工口堂
分类: acg | 评论数: 16.

护士都知道,医生都明白

- ji - 乐淘吧
乙酰螺旋霉素片+人工牛黄【消炎】. 干咳:百合固定口服液 养阴清肺. 黄痰:急支糖浆 肺力咳合剂 等等. 白痰和黄痰都可以使用:镇咳宁含片. 眼药:复方硫酸软骨(润洁)【保健】. 四味珍层冰硼滴眼液(珍视明滴眼液). 眼药水开封后,一个月内使用完,不然会氧化. 慢性鼻炎:鼻炎片(中联) 千柏鼻炎片(奇星) 鼻炎康片(德众).