网易云音乐一直是一个值得吐槽的地方,比如,它常常认为你懂五国语言,动不动给你日推一些稀奇古怪的歌曲。因为我会日语,所以日推的大部分都是日文歌,还可以接受。但最近网易云音乐开始变本加厉,给我日推俄文歌,这实在是不能接受。
一般我熬夜时,都喜欢开着网易云音乐听歌。不是说我多喜欢音乐,而是为了防困。精力专注的时候,歌曲就像一种微噪音,你根本感知不到。有时也会听到一些不错的歌曲,就下载收藏。
周一时听到一首名为「PLANET」的歌曲,前奏就十分抓耳,当时立刻点击下载,可惜这歌竟然要付费。生在天朝,仗着自己从事 IT 相关工作,最大的好处便是能免费搞到一些数字出版物。但我在谷歌、百度上查找许久,竟找不到这首曲子的 320 Kbps 版本,不禁有些沮丧。
在网易的「チーズ牛丼」(沙拉牛肉)上找到一篇关于「PLANET」的创作组合 「ラムジ」 的介绍。22 岁的山下佑树在过生日时,只因想唱点什么来到东京,和报复不得施展的井上慎二郎桑如童话般在雨中相遇,并开始了长达 8 年的演艺事业。
当時、井上慎二郎に初めて出会ったとき、雨に濡れて震える子羊のような容姿だった為、当時の山下のイメージから羊を連想し、アニメの子羊キャラクターからラムジと命名。
当时山下佑树遇到井上慎二郎,看到他被雨淋湿的姿态,联想到了动画《ラムヂーちゃん》里“子羊”这一角色,因而采用ラムジ作为组合名。
一切都是那么巧合、随性,连乐队名都有这么哭笑不得的缘由。然而,并非每个梦想都能瓜熟蒂落,ラムジ在 2012 年便宣布 2013 年解散。我翻遍他们为数不多的专辑、单曲,喜欢上的,也只有那首「PLANET」。
可我还是不死心,我能感受到歌曲里那种热情和呼唤,那种渴望展露头角、被大众关注的心情。现在的我与当时的主唱山下佑树年龄相近,更能体会他期盼与绝望交织的矛盾心情。我翻遍脸书、推特及所有我所知道的社交网络,却没找到关于山下佑树的任何信息。他随着ラムジ的解散,消失在大众视野。即使是推特上,也很少有人提起。
可是,我还记得,就像他们的歌还在被人听、被人唱一样,我还记得这么一个乐队,如流星般存在过。
前些天翻推特,看到有人说,大部分代码的存活时间只有不到 5 年。回想自己接手过的很多老项目,确实如此。在 OneAPM 上班时,兄弟部门的系统一年重写了 2 次。自己维护的系统,也因个人审美变化,一年内留下了 3 种不同风格的代码。
如果说乐队的解散还能留下当时传唱的歌曲,那么程序的重写,可能就是彻底消失。那么,作为程序员,我们还能留下什么呢?
我想,只有编程思想吧。
记得 4 个月前带小弟写的 SQL Generator。核心思想是对当时业务 DSL 的抽象封装,以及函数式变换思想。即使后面代码废弃,我想它的定义仍能传递给每个维护过它的人。这个设计思路再精进,便是Language Implementation Patterns中提到的解析与生成两种形态。虽然 SQL Generator 独立于底层解析器开发,但最终二者的抽象结构惊人一致。
同样的说法可以应用于程序设计的很多地方,比如单元测试。我以前一直不知道什么是测试、怎么写测试。后来有意识地学习模仿后发现,单测无非三大步:构造测试对象和测试数据、调用方法、断言。
测试对象有些可能是 Mock 的接口,但一定不能 Mock Static 对象,否则说明代码抽象存在问题。测试数据,也叫样本,关键在于能命中边界条件。而断言无非就是各种 true、false、equals 的判断,hamcrest 之类无非简化判断过程,但切记慎用 Mock 里的 verify 做断言。
所以,测试代码再怎么变,也逃离不了上面的编程方法,即使是别的语言,亦是如此。我很费解的是,在苏宁看到同事写测试时,竟写一个 main 方法,用 System.out.print 输出结果人肉判断。因为上线有单测覆盖率要求,他们竟写了针对实体 Getter、Setter 的测试代码。这种测试代码,有存在的意义吗?
有时我觉得,编程就是一种体力活:想好了怎么设计,后面的编码加测试,纯粹是一种肝状态。有时候又觉得很多代码纯粹是套路(模板代码),只是因为某些需求不得不这么写。正如标题所言,总得给自己留下点什么。我希望留下的,是那些有意思的设计思路,而不是那些 「垃圾代码」。
这个音乐很不错
最后一段最后一句,+1