关于阅读代码

与其说阅读代码如同读书,不如说如读棋谱

从小阅读计算机编程书籍,
大师们就教育我,
写代码如同写书,
代码是写给人看的,
不是写给机器看的,
所以一定要保证有优良的可读性。

具体的来说就是要做到:
遵守命名规范;
清晰的注释;
最大限度的代码复用。

最好呢,
还有要有完善的文档。

但是,书与程序还有有些不同。
不同的地方在于程序是非空间线性结构。
对于书来讲,
我无论从哪开始翻起,内容都是连续的。
尽管对于一些情节紧凑的小说来讲,
可能从中间开始看,仍然不明所以,
但不影响叙事的线性顺序。
从物理空间的角度看,作者一定是希望读者从上到下,从左到右,从前一页到后一页的顺序来阅读。

而代码不是这样子。
假如我们将一个系统的代码全部打印出来。
连怎么排序都是个问题。
最简单粗放的方式就是按照文件名排列(排序A)。

如果我们按照读书的方式来阅读排序A的结果,
除了超人之外很难能读懂这个系统到底要做什么。
(可以设想下排在前几本的程序会是什么,按这个顺序读代码会是一场灾难)

对于书来讲,最开始一定会是目录和前言。
那我们作一个代码文件的或者函数的目录,并且索引出来。
然后写一个介绍系统功能的前言(排序A改)。

这样可以通过类似于翻新华字典的方式,
来阅读我们的代码。
但我们还是不知道该从何读起。(先找到MAIN()是个明智的做法,但有些时候并没有Main)

一个故事,一定有一个开头,
一个代码,一定有一个入口。

代码的内容的组织方式与故事不同。
代码在物理空间上不是线性的,
而是在时间上线性。

从代码的入口开始,可能下一行的内容要跳到别的代码里,
然后再跳进另一本代码里,
然后出现了一个分支,
再次进入另一本代码
。。。。。。。。
终于在翻了大半本书之后,
跳回了第一页。
然后下一行,
再次跳遍了大半本书。
内容之间只有前后,
没有绝对的下一页一定和这一页相关,
甚至下一行与这一行的相关。

其实,如果看过棋谱的话,就会知道,
代码的这种特性,
与棋谱很像。

棋谱,
有两种记法。
一种是按照着棋的顺序,以纯文字描述。
如象棋棋谱中的 马五平七,车三进四。
一种是绘成图,然后每一着上写着步数。
读者自行按照图中的数字脑补在不同时点棋盘上的样子。

当然,代码是无法如同第二种技法那样具象化的。
所以,阅读代码的最好的方式并不是按照文件和上下文的物理顺序来读,
而是按照时间顺序来组织。

以后可以做个工具以静态分析的方式将程序的调用顺序列出来,
以达到debug单步执行的效果。

0

旅行@3

最让人羡慕的,永远是追逐梦想的人。

在日本,无论是在人来人往的大街上,
还是在周末的公园中,
还是在电车里,
无时无刻都能看见背着吉他的年轻人。

其中有一些还做学生打扮,
有一些已经有了艺人气质,
匆匆地赶着路,
或与朋友大笑,
或默默不语。

日本街头艺人
日本街头艺人

年轻人在街头卖唱,
俨然已经是东京的文化现象。

每天,新宿车站附近都在熙熙攘攘。
其中印象最深刻的就是在小田急百货的门口和去往光面的路上,
那些为了欣赏自己音乐的人而歌唱的人,
与为了欣赏自己喜欢的音乐而驻足的人。

光面----卖点是正宗中华面(喂。。哪里正宗?)
光面—-卖点是正宗中华面(喂。。哪里正宗?)

唱的时候全身心投入,
唱完之后鞠躬感谢驻足倾听的人,
然后发传单介绍街头演唱行程。

听众在听完一曲之后,鼓掌致谢。
如果真的被他们的音乐所感动,
可以买张CD来支持他们。
当然,一张要几千日元。//大概100到300人民币不等。正版。。。

街头艺人的CD
街头艺人的CD

日本演艺圈的竞争激烈又严酷,
每年都有大量年轻人进进出出,
能够大红大紫成功的起来的人屈指可数。
为了出名赚大钱,真的值得去挤那支独木桥么?

乐队主唱
乐队主唱

直到那天,
南大泽

那天有点冷,
在outlet的中心舞台,
有一只乐队在为游客们演唱。
主唱妹子只穿了一件连衣裙,
演唱开始前不断的重复着“今天好冷”。

但开始了之后便忘情的投入到了演唱之中。
我在想,一定是收了不少钱才这么玩命吧。

就这么一直到了表演时间结束,
乐队其他成员立即给主唱妹子披了一件上衣,
然后大家开始有说有笑的收拾乐器,
主唱妹子走下台来,
做到观众旁边,
询问他们感觉表演的怎么样。

这种笑容我那么似曾相识。

如果没有发自内心的热爱,
是不会在恶劣的天气,
寥寥的观众面前,
如此卖力,
如此欢笑。

乐队
乐队

我再次回到了新宿街头,
仔细观察了街头艺人的脸,
仔细观察了电车里背着吉他的年轻人的脸,
仔细观察了公园里,围坐在一起高歌的人的脸。

没有厌倦,
没有绝望,
没有痛苦。

是希望,
是不顾一切奔向梦想的坚毅。

勇者,
从来不是最强的人,
而是可以战胜自己的人,
是可以向着梦想前进的人。

0

旅行@2

要是说,这次旅行最大收获是什么,
绝对不是美食和shopping,
而是对于人生的一些感悟。

期间无论是东京这边,还是中国这边,
都发生了很多事。
在东京让我有所感悟的地方也很多。
但对我影响最大的,应该还是昭和纪念公园

当时选择去这个公园有着很复杂的原因。
作为中国人来讲,其中最有趣的,
就是这里曾经是美国占领军的基地。
美军撤走以后,
日本人以“緑の回復と人間性の向上”为理由,
将此地修成了一个公园。

东京的大部分公园都是免费的,
但是国营昭和纪念公园收费,
而且收了门票钱还不归立川市,
因为是“国营”。
日本各县市区都是高度自治,
所以这种情况并不多见。

而且就是因为不归立川市管理,
按理说也就没有了财政拨款,
所以门票也特贵,
居然达到了400日元。(人民币24元左右)
并且不像其他的公园,不全天开放。

门票
国营昭和纪念公园门票

门票贵是贵,不过风景确实很好。

昭和纪念公园的湖水
昭和纪念公园的湖水

蓝天白云,
碧水蓝天。
就差点绿色,梅花盛开之时。

游水的鸭子
游水的鸭子

整个旅行中间,
虽然过着开心的日子,
但工作与感情两不得志
还是很郁闷。

看到这等祥和景色,
心情也开朗多了。
至少说,不再是负数。

东京是个快节奏的城市,
但在公园里,
一切都是平和的,慢慢的。
东京人真会过,
在城市里可以用这么清静的地方躲一下。
接近大自然。

木柴堆的蜗牛
木柴堆的蜗牛

干净,
公园里特别干净,
水也干净,
路也干净,
草地也干净,
天也干净。

慢慢逛着,
脑袋里一直纠缠着的,撕扭着着的,
也静了。

慢慢走着,
突然发现前方有一大片空地。

一大片空地
一大片空地

中心有一个大树,
由于刚开春,
还没有绿色。

我慢慢靠近那棵大树,
走啊走啊,走了好久,都没见树接近。
期间,有野餐的家庭,
有踢球的孩子,
有放风筝的男子,
也有情侣坐在草地上谈天。

大树
大树

走了10多分钟,
终于接近了。

我被彻底震撼了。
大树我也见过很多,
但这么大一片空地上,
只有这么一棵树的震撼力,
照片是无法展现的。

我越往前走越开心,
止不住的笑。
世界里只有这棵树,
其他都是空旷旷的,
什么都没有了。

我放下了一切,
仰望着这棵大树,
转着圈看着周围无忧无虑的人们。
空间太大了。
如果没有这棵树,
根本不会体会到到底天地可以有多大。

接近了大树
接近了大树

在大树的下面,环顾着这个空间中的一切,
什么烦恼都放掉了。

我席地而坐,背对着它。
躺下来,看看蓝天。
太踏实了。

我们为了那么多小小的琐事在烦心个什么呢。
这才是生活啊。
世界可以这么大。

也许你去过世界各地,
也许你住着超级套房,
也许你去过最大的广场,
但你能体验到的空间只有那么大啊。
你的周围总是充满了人,建筑物,各种噪音,各种灯光。
独处的空间能有多大呢。

夕阳下的大树
夕阳下的大树

那段时间里,
第一次思绪那么放松,
那么安心的呆着,
我知道这里全都属于我的,
没有人会来打扰我。

后来和一个爱好摄影的大叔,在同一个角度照下了夕阳下的大树。
对于美的理解和追求,是不分国界,民族的。
我起身往外走,
不禁回头看看,
我知道我又要返回那个让人紧张窒息的空间了。

0

旅行@1

从日本回来之后,一直没有整理什么,任凭所有照片和感受躺在那里。
这次去日本旅行获得的远大于第一次。
可能因为第一次去还有其他人陪同,注意力也都放在了工作上。

80%的憎恨都源于误解,80%的误解源于不了解。

我记得出发前一天,
东京下了一场很大的雪,大到我有点担心飞机能不能正常降落。

Shibuya
Shibuya

图为在涉谷的忠犬八公像

当然,出发的时候国内是气温宜人,晴空万里(当然有点雾霾)

周水子国际机场
周水子国际机场

虽然还是有点担心天气的问题,毕竟不是第一次坐飞机了。
担心果然是正确的。
刚飞出陆地就遇见湍流,一直湍到成田。。。
做个比喻的话,这个飞行员把飞机开的和三路汽车似的。(多次感受到了失重,谢谢中国航空)

经过担惊受怕的飞行,安全落地后,
赶紧利用成田的机场Wi-Fi和领导们报了平安。(Skype is good)
之后在成田机场看到了让我心情很复杂的东西。

华为的广告
华为的广告

一方面我对这家公司的印象不是很好(打过不可告人的交道。。。)
一方面佩服它打海外市场的能力。

到了成田,微微下了点小雨,气温宜人,
从大连出发的时候,我只穿了件衬衫。
满以为东京和大连纬度差不多,
应该大丈夫才对。
事实却是如此嘛。

不过这只是在成田。。。。东京也老大了。

这边寻找免费14天的Wi-Fi未果之后,赶紧去乘JRExpress(高铁)赶往目的地。

天空树
在高铁上拍天空树

随着车越越发现不对劲,
怎么出现了积雪。。。。。

东京街头的积雪
东京街头的积雪
0

瞥见六

「Absolutely. He is not wolf.」
「Are you sure is HE? Not IT?」
「Obvious.」
「Em…Interesting.」
Then, he intends to play the next audio.
「Wait…it’s weird.」
He stuns for seconds.
「You mean…It came from a male. Is it?」
「Exactly.」
「What the hell. How do you know it.」
「I able to learn just as design.」
「Crap. You designed for distinguish wolf’s voice, not human’s! You should just respond YES or NO by the fucking design!」
「Just by learn, dude.」
He notices there’s a creepy smile on screen with ASC notations.
「Do you know what’s the meaning of the human beings?」
「Actually No. I don’t know the meaning of the WOLF, neither.」
「Fine. We have to done it today. Let’s go on. Here we go. Sample No.2.」

0

瞥见五

他送给了她一块石头,
她的笑容立刻僵住了。
看着这个精心密封的玻璃盒子,
她努力地掩饰自己失落的情绪。
他也不是个耳清目明的人,
没有觉察那转瞬消失的微表情。
"挺好看的,谢谢啦。"
"哈哈,我找了好久呢"
"我还有事,先走了。"
"哦。。。好吧。"

「终究还只是个小男孩吧」,她苦笑道。
轻轻的把那块石头放在了角落里。
最后她选择了送给她钻戒的那个男人。

其实他是懂得她想要什么,
那块岩石与地球同岁,
见证了地球诞生以来的岁月变迁,
他在世界最高之颠取得,
其中包裹了生命起源之最直接证据,
一块足以换得整个世界。

「终究只是一个小女孩吧。」

0

瞥见四

“你能感受到吗?“他伸出左手食指,指了指对面的墙。”就在这个位置。“
我闭上眼睛,深呼吸,清空一切杂念。
…………是那里吗?………………不是………………好像是这里…………有干扰…………
就是这儿!
数据的流动。
尽管被遮蔽的很好,但还是有一丝丝气息渗透了出来。
相信在遮蔽下,一定有着洪水般的数据在涌动,翻滚。
也许是整条尼加拉瓜大瀑布,也许是全长的亚马逊河。
顺着这丝气息流动的方向,最终与其他的数据流逐渐汇合,
最终进入那个数据海洋。
海洋里各种颜色的数据在相互吞噬着,撕咬着。
数据在其中翻滚,沸腾,迸发出巨大的能量光伏。
我再次深吸了一口气,从海洋中的支流顺流而上,
这周围的数据流向清晰了起来,一丝丝,或者一缕缕,
在建筑物,在地底萦绕着。
已经看似废旧的城区,数据的世界却如此生机勃勃,金光闪闪。
就是这里了,他说的没错。
”动手吧。“

0

瞥见三

“混蛋,不要说这种话了!”
他靠着墙,半躺在地上,血虽然好像止住了,但还是染红了外套。
“我们不会把你留在这儿的,队长!”
“队长!”
“队长和我们走吧!”
他看着一张张焦急的面孔,
急促的呼吸开始变弱。
“混账们,都给我走。。咳。。。”
她拨开了人群,冷冷的看着地上的他。
”你根本不是我们的队长。“
大家惊讶的望向她。
”你是我们的伙伴啊。“
她继续冷冷的说道。
”也许没有队长组织还会存在下去,“
她优雅的弯下腰,伸出了右手。
“但失去了伙伴,才是我们无法进去下去的原因啊。”

0

瞥见二

我摩挲着这古老的痕迹,
揣摩着那时候的人们到底有多么的匆忙。
「就是这里了」。
反复的抚慰着那段躁动的镌文,
如果他们知道匆忙的代价,
时光中也就会少了这段岁月。
匆忙的种族,也匆忙而去了。

0