同事发来他写的文章,此处是链接。讲的是代码中ifelse
的缺点,及改进方式。
同事视ifelse
为洪水猛兽,在我看来其实不然。ifelse
是所有计算机高级语言的基本语法或者说基本词汇,有了基本词汇才能有丰富的表达啊。ifelse
的作用是进行语句的判断,从而改变程序流程。从某种意义上讲,ifelse
是一种查找过程。找到符合条件的判断语句,然后执行对应的大括号内的代码。
文中提到,除了ifelse
以外,还有switch
,map
(字典),command
模式,多态等可以替代ifelse
。这些方式可以说都是在查找,找到那个对的代码,然后执行。文中很推崇用高级的编程模式来做,比如command
模式,多态等。但不是所有的情况都适合,而且大部分情况是没必要使用这些高级技巧的。
下面就具体罗列下每种情况的优缺点和适用条件。
如果是数量较多,用map
很合适,对应的是command
模式,优点是查找速度快,易扩展,缺点是空间换时间,需要额外的存储空间,还需要定义多种类。量少时,可以用枚举,优点是清晰明了,缺点是要定义额外的枚举类型。量更少时可以用ifelse
或者switch
,优点是写起来很符合直觉,写得快,缺点是代码看起来比较多,杂。
具体实施时,就需要编码者根据不同实际情况进行选择了。这个其实是个经验问题。再比如,最近我在练乒乓球,主要练习拧拉,虽然这个技术很厉害,但是不是所有情况都适合,对方搓你的正手底线,你还用拧就不合适了,这个时候直接拉球就好了。
最后,用白居易的一个典故来表达我编码的愿景,真心希望我写的代码都能够老妪能解的。