通常,我们把想不明白的事情,用这句话表达,比如:前台的MM怎么会看上那个小子???哎,萝卜青菜
,各有所爱啊!
我喜欢反过来看事情:为什么不管吃萝卜还是青菜,都采用同一种端碗提筷子的手法,但是不同的人居然
还各自找到各自的满足?
让我们带着思考回到程序这个话题,程序是否可以满足这样的特性:总是那一套程序,但是在不同的场景
下,由于吃的“数据”不同,表现出不同的“口味”,让大家都满意?
好吧,这貌似有点难,让我们用一个小程序理理思路
1、你需要管理一批库存材料,材料方面,我们简单起见,只有价格这一个属性。
2、老板要求,需要知道所有材料价值多少,另外,单个材料大于100元的,属于贵重材料,挑出明细列出
来。
3、这难不倒你,三下五除二把程序做好了,运行了几天没问题。老板却说:我觉得大于500元也许才算贵
重,你改改吧!
4、改个数字并不难,你修改了代码程序继续运行。
5、。。。。。
哦, 稍等!让我们停一停,这个叙述太过于常规、太流畅了,我们回到更为一般的角度再看看:也就是说
老板下次改成1000元以上才算贵重,我们还得修改代码,或 许你要说:我很擅长改这个,木有问题!(我知
道你只改个数字,当然很自信!)但是永远不要忘了,我们极大的简化了问题,材料只有价格这唯一的属性,
真实的 情况下,逻辑和条件都会随着考虑因素的加入而呈指数级增长!
如果这个时候,你想到的是设计模式,说明你还在徘徊!如果你想到了配置文件,可以说:你终于开始体
会到一点点数据的好处了,有那么点意思了!让我们继续:
1、增加了配置文件,把某个昂贵标准,写入了配置文件,每次老板说要改,修改一个xml就行了!
2、程序运行了很久,老板是个变态,期间让你修改了好几百回这个价格!
让我们再停一停,这个叙述中,你发现:配置文件虽然把数据独立出来,却并没有解脱你,这很关键。
其实不是老板变态,而是这个问题放到你身上,你也不能一次把价格定下来,因为但凡是个比较意义上的
词汇(比如这里的“贵重”),都是没谱的!
我们需要从程序层面突破思维的障碍,那么障碍是什么呢?其实,人总是认为一个静态的概念一定是静态
的!正如这里的贵重,它一直在变,诚然在具体的某个时间点上它是个数字,但是它真的一直在变(我反复强
调它在变,你看到了么?)
来吧,我们继续
1、在软件上增加个人中心,让老板自己填一个数字,他说多少算昂贵,它就是昂贵!
2、这解决了很多问题,甚至老板关心1000元以上的,主管关心500元以上的,组长关心100元以上的,它们
各自独立配置,各自得到自己想要的结果!
我 们总结一下,原来是程序里的代码逻辑驱动软件,你写100它就按100执行(可不仅仅是筛选数据这么简
单哦,也许还涉及到分支判断,就能感受到一个数字的 大不同了!),但是现在呢?程序不变了,存储了用
户和阀值之间的配对数据,遇到什么样的人,就按什么样的数据驱动软件!
千万不要觉得填写个性化选项太正常了,要理解变化的产生是由于变化本身,变化的解决方案就是让软件
自由变化,这种思想蔓延开来就能拨开云雾见青天!
稍等一下,我稍微深入的再啰嗦几句。通常,我们的系统不会简单到只有价格这一个维度的,那么错综复
杂的数据和条件,老板怎么可能配置的过来?
还是那句话,人总是认为一个静态的概念一定是静态的!正如这里的软件,它一直在变,诚然在具体的某
个时间点上它是具体存在的,但是它真的一直随着数据而随时随地的变化。
1、可能刚开始时你没有筛选出昂贵的功能,只有一个按价格倒序分页的功能。
2、随着老板的使用,你发现他只看到第3页,而第3页大约就是500元的标准,于是,对他来说关心的
“昂贵”就是500为标准。
3、随着他的继续使用,可能慢慢只看第一页了,而第一页是1000元的标准,于是,整个程序对他来说,很
自然的切换到1000为标准。
4、这是一个从行为到数据积累,潜移默化的过程!千万记住,软件由数据驱动,数据无时无刻不在变化,
软件不是一个静态的概念!
5、于是,无论数据多么复杂都是和整个系统相辅相成的,来的很自然,用的也会很自然!
最后,我想说一说类似“哲学”上的事情:任何事件的发生都是有原因的,一只小小的蝴蝶,
可以引发蝴蝶效应!所以,牢牢的把握住数据,利用它们驱动软件,利用它们的变化提升软件。因为业务的变
化早就在数据上反应出来,而软件由数据驱动,你甚至根本不用修改软件。
试试吧,又不会怀孕。
查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/project/