以人为本的程序的设计

开发 架构
软件要越来越人性化,就要代替人干很多事情。软件干的事情越多,程序设计就越来越复杂。程序越来越复杂,Programer 就有义务使程序尽可能的 Simple。

软件要越来越人性化,就要代替人干很多事情。软件干的事情越多,程序设计就越来越复杂。程序越来越复杂,Programer 就有义务使程序尽可能的 Simple。

当然,这个 Simple 并不是简化需求来使代码量减少,而是运用智慧,使代码达到“繁而不乱”的效果。

对,繁而不乱,这是艺术!

为什么要求代码“繁而不乱”?这要从代码的使用角度说起。

代码,说白了,是一种人与计算机交互的语言,它的使用对象有两个:计算机,和人。

语言的作用是传递信息,而语言最根本的原则就是便于理解。

做为计算机语言,特别是现在流行的这些高级计算机语言,能不能被计算机阅读和理解,强大的开发工具随时都会告诉你。而这些语言能不能被活生生的人类理解,这就是人们自己的事儿了。

有些人坚定的认为,代码写出来就是给计算机执行的,其它问题一概不管。这倒干脆,不过这是非常危险的。因为代码不只是给计算机运行的,还有一个重要的作用就是给人阅读的。至少,你写完代码需要自己 Debug 一下吧……

其实,自从有了面向对象语言,实现代码的繁而不乱已经非常的 Easy 了。不光 Easy,而且还显得是那么的优雅。

语言都是相通的,设计者们在设计计算机语言的时候赋予了它太多人类语言的特征。所以,设计一个优秀的程序,只需要好好理解我们平时所讲的话,直接用计算机语言表达出来,就绝对是非常棒的程序。

怎么把人类语言翻译成计算机语言?简单来讲,注意以下两点就行了:

  1.  所有名词(代词),翻译成属性
  2.  所有动词,翻译成方法

举个简单的例子,拿我们平时最常说的一句话,来翻译一下:“我看你妹”。简单的四个字,三个称谓(代词),一个动词。翻译成计算机语言,就是:

  1. 我.看(你.妹)  I.See(You.Sister) 

I 的行为 See,对象是 You 这个对象的 Sister 属性。我不管 You 的 Sister 属性是谁,叫什么。当然,如果 You 的 Sister 属性为空,即你没有妹妹,那么 See 这个方法就没法执行了,应该直接跳出。(**8.26 9:49添加该段**)

怎么样?是不是对整个业务逻辑一目了然?

基于这个思想,现实中的一切都可以使用面向对象的思想来武装。

属性的设计比较简单,许多人往往会纠结于程序中的方法的设计,比如代码过长的大方法,还有逻辑过于复杂的笨方法。下面拿一个稍复杂一点的业务来实现一下以人为本的方法设计。

比如,今天早上我一觉醒来,睁开眼,开始计划今天的安排。基于人类的自然使命,和我个人的社会责任感,今天我可能要干很多事情。首先我要起床、洗漱、吃早点、上班、工作、吃饭、工作、下班、吃饭,可能我还要下班回家的路上去一趟超市买点东西,晚上吃完饭再嗨一会儿(可以打打牌,上上网,看看电视),最后睡觉。这样,今天就结束了。所以,我的大脑里立刻就会出现下面这样一份“今日计划”清单:

  1. 起床
  2. 洗漱  
  3. 吃饭  
  4. 上班  
  5. 工作  
  6. 吃饭  
  7. 工作  
  8. 下班  
  9. 买东西  
  10. 吃饭
  11. 休闲  
  12. 睡觉

如果,我把我今天的计划设计成一个程序,“今日计划”的执行方法里只写这 12 行代码,无论谁来看,都能一目了然的知道我今天都要干些什么事情了。至于你起床时是把被子用手掀开还是用脚蹬掉,起床穿衣服时是先穿裤子还是先穿内裤,这是你做“今日计划”的时候不去考虑的问题,也是跟本不用你详细考虑的问题,也是阅读你代码的人不会直接关心的问题,这些都属于“起床”这个子业务的任务,或者是“起床”这个业务的子业务。比如,我的“起床”方法就这样设计:  

  1. 伸个懒腰
  2. 掀开被子
  3. 坐起来
  4. 穿衣服
  5. 坐到床边上
  6. 穿鞋子
  7. 下床

同样,如果谁想了解我起床的过程,看这几行代码,还是一目了然。同样,穿衣服的过程都设计到“穿衣服”方法里,有条有理。

另外,至于吃完晚饭的休息时间,我可能打牌,可能上网,可能看电视,具体的决定,是看到时我具体的心情,所以我做计划时安排的是一个“休闲”时间,在这个休闲时间里,可以获取我的心情状态,根据不同的状态,来执行不同的休闲方式。

不过,具体的打牌、上网、看电视,它们不是“休闲”方法的逻辑,所以也会单独的封装成一个方法来处理。

以这种方式来分的话,整个程序逻辑清楚,结构分明。更重要的是,让读者易于理解。根本不会存在难理解的“大方法”和业务复杂的“笨方法”。

最后,我极力的不赞成使用数字来限制程序,非常不喜欢有些人拿出一些所谓的“科学”数字来做为编码准则。例如:人类同时关注的事情不超过三个,人类同能够同时处理的信息不超过七个,以及过于滥用的二八原则,还有页面大小25行等等。人类的脑袋差别太大了,这世界上的特殊情况太多了,以及各个开发人员显示器分辩率也差别太大了,所以任何用固定数字来做为行为准则的,都有些失之偏颇了。真的完全不建议。(除非你是项目经理,在制定项目规范)

注:由于规定,文章内容个别用词已经更改。

原文链接:http://www.cnblogs.com/zhhh/archive/2012/08/26/2657088.html

责任编辑:林师授 来源: 博客园
相关推荐

2009-03-04 15:04:52

IT

2022-12-05 10:14:44

CIO以人为本

2011-05-20 09:41:15

2012-08-27 13:06:36

2011-07-06 13:42:42

Scrum

2022-12-05 17:21:50

以人为本IT管理CIO

2022-10-12 16:55:32

盛业以人为本招聘

2021-08-10 15:40:13

用友YonBIP人力

2020-02-27 12:20:20

RSAC腾讯安全

2012-05-16 14:30:42

高效、便捷

2015-10-26 10:08:21

互联网+智慧医疗

2022-04-14 10:33:21

盛业人力资源供应链

2023-02-28 11:21:38

CISOCIO

2014-06-03 10:21:00

2021-07-07 10:47:46

物联网区块链安全硬件

2021-04-14 17:34:35

办公

2011-07-19 10:32:22

云计算信息化

2012-10-25 11:06:06

云计算架构师峰会
点赞
收藏

51CTO技术栈公众号