我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。
这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。
目录
引子
写程序不是我远离社会的理由。
程序员也要度假,所以我坐火车去了海边。好吧,其实我一点不宅,经常出门旅行的。只不过这次因为时间关系在高铁站里面等候太久,闲着没事琢磨了琢磨高铁站的设计。
指示不清
“指示不清”是我们公共设施的普遍问题,这和软件交互设计其实都是一样的原理。
做交互设计(我避免使用“界面设计”这个词,因为这个词会被大部分人解读为“找美工画界面”)的第一目的——我以为的——是无需学习即可操作,在公共设施上就是“看指示牌,无需问人”。
大型的高铁站很多是这样的模式:铁轨在中间的二层,一层出站,三层候车,进站出站的距离都是最短的,非常方便。美中不足呢,进站口编号和站台的对应不清晰,造成了很多困惑,批量乘客上错车的情形虽不算频繁却也时有发生。
把问题归结为用户的愚蠢是IT业常见的解决方案,不过这个解决方案不解决任何问题,只会让公众视我们为异类。
好的设计可以减少用户犯错
好的设计会减少用户犯错的机会。减少用户犯错的机会最重要的是不让用户误解。而不让用户误解如何做到呢?
对于专业软件,当然可以要求用户首先学习专业知识,然后进行专业训练,而面向公众的公共设施或者大众软件该怎么做呢?当然不能要求用户学习。既然不能要求用户学习,那就只能使用符合用户直觉的概念,让用户无需用脑思考就能获得需要的信息(而不是专业但无用的信息)。
正题:我该从哪里上车
现在进入正题:我该从哪里上车?这是用户(乘客)在高铁站里的核心目标,其余的都是次要的。
而“上车”需要的信息是什么?检票口、站台。
这个是某高铁站的一个检票口:
由于铁路设计的原因,站台都是一对一对的,两边都有列车停靠,因为最边上的站台只有一边有铁轨,所以14、15是一对,检票口其实是同一个,下去之后是同一个站台,一边是14一边是15,如果两边恰好都停了车,慌里慌张上错车就是大概率事件了(两边同时在上车本身是小概率)。
这里的指示牌给人的感觉是,一边是14一边是15,是两个不同的检票口,如果不经常坐火车的人多可能会造成人都在一边排队的情况。
A14、A15和B14、B15什么关系?因为高铁站很大,AB之间距离很远,这个区别是很重要的。很多人都会困惑究竟应该在哪边候车。当然,公告牌上有对应的车厢号,问题不大,不过先走到一边,看清楚牌子,然后走去另一边也挺辛苦的(此处还有一个大坑,垂直电梯只在一边有,却没有任何指示,这是另一个问题)。
A14/A15这种表达正确吗
我这里重点要讲的是,“A/B”和“14/15”究竟哪个概念大?哪个概念重要?
“A/B”其实只是站台的两端,从那边都可以上车,只不过是那边更近一点而已,“14/15”代表的是整个站台,所以从任何一个角度讲,“A14/A15”这种表达都是不合理的,要么倒过来“14A/15A”,要么把A独立出来,显示在整个牌子的顶部,因为A侧实际上指的是整个候车大厅的这一侧的所有检票口,所以其实根本没必要显示在每个检票口,房顶上挂个大大的“A”就可以了。
可以设计得更好吗
因为14、15站台共享一个检票口,牌子上就应该正确表达出“共享”这一概念,同时,下去之后对应两个站台,也应该明确体现,所以,更合理的设计可能是这样的:
站台14、15检票口 | |||||||
车次 | 开点 | 站台 | 地标 | 状态 | |||
G2692 | 18:08 | 15 | 绿色 | 候车 | ---》 | ||
《--- | GXXXX | 18:13 | 14 | 黄色 | 候车 |
这样是不是好很多?
(这里是结束)