从人的眼睛想到项目中的奇葩代码

有一天,一个新来的同事那里一段我写的代码问我,这段代码是什么意思,为什么有这么一个奇葩的判断。我看了半天,经过努力回想,才想到是怎么回事。我红着老脸,叹了口气说道,这是有历史原因的。

这让我想起了人的眼睛。达尔文在研究物种进化时,被眼睛那及其复杂和精巧的结构震撼,甚至在《物种起源》一书提到,“眼睛有调节焦距、允许不同采光量和纠正球面象差和色差的无与伦比的设计。我坦白地承认,认为眼睛是通过自然选择而形成的假说似乎是最荒谬可笑的。” 

但是,当人们了解了眼睛的结构后,却不禁感叹,这他妈是谁设计的,人的眼睛居然有这么大的缺陷: 人眼结构和章鱼眼结构的对比

1.人类的眼睛有盲点。如图中,视神经在感光细胞的前面,而视觉神经要于大脑相连,就必须要传过感光细胞,造成视觉盲点,而人感觉不到盲点,是因为,人有两个眼睛,两只眼睛的盲点不一样,大脑把两只眼睛看的图像重叠后,盲点就没有了,而当人用一只眼睛看的时候,大脑会自动补全盲点,但往往补全的不对(盲点的测试)。因为盲点大脑要消耗额外的能量。 毛细血管破裂

2.遮挡光线,双极细胞和视神经都在感光细胞前面,因此光线必须先穿过视神经和双极细胞,才能到达感光细胞形成图像。光线再穿过视神经和双极细胞时,一部分光线被挡住了。为了给双极细胞供氧,视网膜表面还布有一层血管网,这层血管网也会遮挡光线,而且如果血管破裂,瘀血,会更加影响视力。

3.视网膜易脱落。不像章鱼眼睛那样,视神经在视网膜外面可以把视网膜牢牢拉住,人的眼睛,视神经在视网膜内部,因此视网膜与眼球壁之间只由感光细胞顶部与色素细胞层松散的接触,因此极易脱落。

人的眼睛有这么多缺陷是怎么来的,原来所有脊椎动物共同的祖先,它后脑勺是透明的,也就是说它们是向后看,这样的话,视觉神经和双极细胞在感光细胞的内侧是没有问题的。但是现在眼睛又向前看了,之前的设计,就有问题了,但又不能删掉重来,只能在原有的基础之上改,于是就出现了人类眼睛,这样的奇葩设计。

其实在软件开发中,也经常出现这样的问题。产品经理提出需求后,程序员还没实现好,产品经理就改需求了,由于时间不够或程序员犯懒,就在原来的基础之上改需求,还没等实现好,产品经理又改需求了,如此往复,导致程序员的写出很多奇葩的代码,BUG不断,还常常被后面的接手的同事吐槽。这也是为什么大多程序员讨厌产品经理的原因之一。

要解决奇葩代码的问题,有两个方法。

第一个方法,产品经理不改需求。但这是不可能的,产品跟生物一样,要在市场环境中生存,就必须要进化,不然就会被淘汰,而要进化就要改需求。因此合格的产品经理会经常改需求。

所以, 只能用第二个方法,经常重构代码。重构就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。

如果对人类的眼睛可以重构,那么就会章鱼眼睛那样,把视觉神经,血管挪到视觉细胞的外面。这样的话,人的眼睛既不会有盲点,视网膜也不会那么容易就脱落了,也不会因为视觉神经和毛细血管遮挡光线,妨碍视力。可惜估计只有上帝才能重构人类眼睛的结构。但是,对于我们写的代码来说,我们就是上帝。

既然是上帝,为什么不做的好点,花点时间重构一下代码,一方面免得被别人吐槽,另一方面避免潜在的缺陷。

猜你喜欢

转载自my.oschina.net/u/587323/blog/1785273