可读代码的艺术(一):简化循环与逻辑

Chapter7 把控制流变得易读条件语句中参数的位置:一般原则:将变量放在左边,常量放在右边。更宽泛地说,将比较稳定的变量放在右边,变化较大的放在左边。如 if ( length >= 10) 而不是 if ( 10 if ( bytes_received bytes_received)稳定的值相当于标的(比较的目标,目标点),而在人一般的思维习惯中,倾向于拿着一个“变
摘要由CSDN通过智能技术生成
Chapter7 把控制流变得易读
条件语句中参数的位置:
一般原则:将变量放在左边,常量放在右边。更宽泛地说,将比较稳定的变量放在右边,变化较大的放在左边。
如 if ( length >= 10) 而不是 if ( 10 <= length)
if ( bytes_received < bytes_expected)而不是if (bytes_expected > bytes_received)
稳定的值相当于标的(比较的目标,目标点),而在人一般的思维习惯中,倾向于拿着一个“变化”的值去跟一个“固定”的值比较。
但是,在非“大小”比较的情况下,上面的原则似乎不起作用,例如验证一个请求参数是否为某个特定值:
if ( request.getParameterValue("name")).equals("Brandon")) ...
此时将常量"Brandon"可以避免出现空指针的情况(上行的参数没有name或者值为空)

if/else顺序
一些参考原则:
* 首先处理正逻辑而不是负逻辑,如 if ( debug) 而不是 if ( !debug)
* 首先处理简单的情况。这个时候可以使if else出现在同一屏幕(同一视野范围)
* 首先处理感兴趣的部分或者可以的情况。
上述原则很可能会相互冲突,这个时候就需要靠自己权衡。一个可以参考的方法是看大脑首先关注的是那一部分,潜意识下会不自觉地关注的部分。根据直觉来做决定有时候也是很好的。如:
if ( !url.hasQueryParam("expand_all")) { ...} else{...}
看到这个语句时,expend_all会不自觉地闯入我们的脑海,占据主要位置,因此此时下面的写法可能更具可读性:
if (url.hasQueryParam("expand_all")) {...} else {...}

又比如,下面的情况先处理简单的负逻辑可能更好一些:
if  not file :
    # log the error
else:
    # do complex logic

?:条件表达式(三目运算符)
这个语法糖在一些情况下的确回事代码更简洁。下面的代码片段:
time_str += (hour >= 12) ? "pm" : "am"
这种方法不错,但我更倾向于下面的写法:
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值