程序的设计美学-程序设计,代码设计,设计模式

对于把编程当作兴趣的人来说,编程越久越会觉得『编程是一种艺术创作』。很多人认为程序员一定爱编程,但真相并非如此,从我周围的统计数据来看,真正爱编程的程序员不足10%,大部分人都是把编程当做营生的手段。

从付出回报比来看,编程是近几年收益最高的职业。即使是零基础,到培训班魔鬼训练三个月后也能找一份薪资待遇不错的工作。为了追求更好的生活,很多不适合当程序员的人也干起了写代码的活。在当前大环境下,大部分程序毫无设计可言,在市场推崇的『敏捷』开发模式下难见好的设计,只是培养了无数CRUD Boy与SQL Boy。

设计的好的程序像一件艺术品,对使用它的人来说思想上能得到升华。每次遇见时,都会嘴上赞不绝口,心里意犹未尽。同样一件艺术品,一千个人看就有一千个哈姆雷特,程序也是这样,你觉得完美无暇,其他人可能并不认同。但是别放弃,总有规律可寻。

在看完『设计心理学』之后觉得收获很多,结合程序设计谈谈自己的理解。

Affordance

示能:指一个物理现象与人之间的关系,也就是物品的特性与决定物品预设用途的主体之间的关系。简单概述为,有形的物品如何传达出人们与它们互动的重要信息。

用直白的话说就是事物通过自己的外在形态,向人们展示自己具有的功能。比如,你看到一张桌子,你就知道它可以放东西;看到一只铅笔,就知道它可以写字;看到一顶帽子,就知道它可以佩戴;

你会通过自己过去所拥有的生活经验去预设你与某个事物之间的关系,就像你会不自觉的给周围的人打标签。你的一个朋友是牙医,之后任何和牙齿有关的事情你都会想到这个朋友。你的一个朋友是律师,之后你有法律相关的问题肯定会想到这个朋友。这就很奇怪,为什么人会不自觉的给周围的朋友打标签,并且为标签赋能?其实不是我们主动为他人打标签,而是每个人都有Affordance。

你的Affordance是什么?这个问题值得每个人去思考。每一段程序也都有自己的Affordance,程序拥有什么样的Affordance由程序员决定。比如PHP的Affordance就是快速开发,性能糟糕,世界上最好的语言(贬义)……

Signifiers

意符:以前产品都比较简单,比如勺子、镜子,他们的功能一目了然,但是随着科技的发展,产品也越来越复杂,很多时候单纯靠外观根本分辨不出这些东西到底具备什么功能,如何使用。比如企鹅,很可能会被认为是QQ(聊天软件)。这个时候,就需要借助设计的智慧将产品本身具有的功能通过一些方式展现的更加明显,让人一眼就可以知道,它能用来做什么,怎么用。

比如,看到门上的把手就知道门后有房间,顺时针转动就是开门;看到墙上的开关就知道能控制电源,接通或者断开。意符不只包含物品自身所表达的含义,而是通过场景化的方式让人产生联想,从知道物品有什么用,到怎么用。比如你有个朋友是牙医,你总是看到他肩上有厚厚的头屑,你会怀疑他是个不讲卫生的牙医,以后看牙肯定不会将他作为第一选择。再比如你发现你的律师朋友喜欢背后说人坏话,也会让你对他的专业性产生质疑,你有一套理论支撑自己快速的完成从A到B的演算,这就是Signifiers。

你的Affordance是什么?比如我是程序员,很多人会为我打上木讷的标签。但是看了我的文章之后,觉得我爱瞎扯,程序一定也写的差。那么我的Signifiers就是程序写的差的程序员。意符,就是让人看到后产生联想,从而得出正确的结论。比如大家都知道Node.js速度很快,但是试了下回调和同步编程后觉得很不适应,于是得出Node.js不适合写后端项目的结论。

Mapping

映射:映射源于数学概念,它指在使用产品时人们对产品进行操作、控制等行为与其进行这些行为之后产生的结果之间的关系,这种关系叫做映射。

比如,你想使用遥控器转换电视节目,按向下的按钮,电视频道进入下一个节目,这个向下的按钮就是电视频道跳转下一个的映射。这种映射已经记录在人们的大脑中,这种映射还能正反转换,比如你想看下一频道,肯定会去按向下的按钮,这是正向映射。你不小心多按了一次向下的按钮,你心里很清楚频道会切换两次,这就是反向映射。

映射在编程中用到的极为广泛,比如hashTable,编码解码,内存映射等等。

Feedback

反馈:指在进行一次沟通行为之后的结果,结果必须是即时的并且能提供有用的信息,还要以一种不显著的方式展示出来。

最常见的就是按钮,例如电视的开关按钮,在按压之后会有弹起和很小的机械声,弹起的反馈能让你的触觉接收到,声音能让你的听觉接收到,在接收到信息之后就知道这次按压的沟通行为成功了。再比如空调,按一下遥控空调会发出『滴』声,你听到声音后就知道这次沟通成功了。反馈要以一种不显著的方式展示出来,如果按一下空调遥控板,空调『滴』了一分钟,这就是太显著的反馈,会适得其反。

反馈在UI设计上用的非常多,这里不展开讲。我们说说TCP三次握手的问题,为什么要三次握手(那么多)?为什么要三次握手(那么少)?这个问题要分成两部分来回答。

A和B的微信聊天记录:

A:做我女朋友吧?

B:好的

到这里A和B沟通了两次,但是B并不知道A收到他的消息没有,心脏都要跳出来了。所以A这个时候应该马上回一句话(反馈),表示自己收到了。所以3次聊天才是两个人确定关系的最少次数。当然你可以聊几万句使得关系更稳固,对谈恋爱的人说很重要,但对程序来说没那个必要。做任何事情,及时且不打扰的反馈都很重要。

Conceptual Mod

概念模型:通过抽象得到高度简化的流程,用来展示事物如何工作。比如电脑中的文件夹、文件,就是在帮助人们建立一些概念模型。其实电脑根本不是按照文件夹这种方式存储文件。

通过概念模型可以使用户能够预测自己行为的结果,比如你将A文件拖动到B文件夹下,即使不打开B文件夹你也能预测到A文件肯定在B文件夹中。好的概念模型就是产品的呈现模型接近用户心理模型,这一点iPhone和微信都做的很好。比如在iPhone上删除软件,长按软件图标之后图标会一直抖动(一些无法删除的软件不会抖动),然后点击删除软件就被删了,非常符合预期。而Windows和Android只是删了个图标,真正的软件并没有删除,并不符合人们脑中的概念模型,这就是糟糕的设计。

编程本身就是一种概念模型,计算机并不能执行我们写的代码。代码需要通过编译器编译成二进制机器码后计算机才能执行。利用概念模型,人们可以将编程语言设计的更符合人类的思维模型。

写了很多,希望大家能将这些设计方式用于日常生活与工作中。如果想看源代码,我推荐PHP的Symfony,一个非常符合设计美学的项目。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 210,978评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 89,954评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,623评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,324评论 1 282
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,390评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,741评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,892评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,655评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,104评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,451评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,569评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,254评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,834评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,725评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,950评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,260评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,446评论 2 348

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,090评论 1 32
  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 2,369评论 0 4
  • 真实的活出自己多畅快,干嘛非得自己骗自己,自欺其人,可怜又可悲。可悲的是:别人都晓得了你在自欺,你却以为瞒天过海。...
    艳_3c8e阅读 242评论 1 3
  • 响应弘丹老师在「第19期21天爱上写作训练营课程」里的号召,写下我的2019年三大目标,希望能在2019年12月3...
    武灵遥阅读 342评论 0 4
  • 【日精进打卡第我175天】 【知~学习】 《六项精进》2遍 共346遍 《大学》2遍 共346遍 【经典名句分享】...
    陈威杰阅读 135评论 0 0