MONTH / January, 2011

博客被黑了

月初博客居然被黑了,主题文件头被篡改,WP 的邮箱和密码也都被改了,幸好这坨无聊的黑客没很过分,都改了回来。然后折腾着换了服务器,结果迁移的过程中丢失了一些数据,WordPress Database Backup 这个插件居然少备份出来几篇文章,其关联的留言也就看不到了,杯具。

除旧迎新,顺便给大家拜年了。


代码之初,性本丑?(中)

代码之丑(三)——switch陷阱

可能是因为篇幅关系,这篇文章里的例子不够有代表性,而且还有越改越没有可读性和可维护性之嫌。曾经我在公司的一个比较有历史的程序里看到过一段伟岸的 switch/case 代码,每个 case 下的代码各不相同且长短不一也就算了,可能你无法想象的是,它里面竟然有几千个 case,总共 10000+ 行的代码!你没看错,一个函数一万多行!这就是从一开始放任 switch 陷阱,经过漫长地演化得到的后果。

其实我并不认为该把 switch/case 当作唯恐避之不及的恶魔,它只是一把双刃剑,就像没必要一味地反对使用 if 一样。在正确的环境下正确使用它的话,只会提高可读性,但如果滥用它(就像 C++ 很多其他特性那样),那的确是一场噩梦。

对于本身结构很简单的逻辑,使用 switch/case 能很好地保持其可读性(显然比一堆的 if/else 好,更不用说多态了),而且也正因为其逻辑简单,条件不多,也不会对系统性能产生明显影响(代码并非越短越快就越好,它首先是给人看的,顺便附带了能让机器执行的功能)。而对于我上面提到的超大的逻辑结构,倒是可以用多态或者状态机来解决,定位问题显然会方便不少(假如这个逻辑架构本身没法改变的话)。

CONTINUE READING »