编写可阅读代码的艺术(7~9)

六 13th, 2013

第二部分 简化循环和逻辑

7. 把控制流变得易读

   核心思想: 把条件,循环及其他对控制流的改变做得越自然越好,运行一种方法让读者不用停下来就能重读你的代码

7.1 条件语句中参数的顺序

   比较的左侧,被询问的表达式,它的值更倾向于不断变化。if (length >= 10) 优于  if(10 < length)

   比较的右侧,用来做比较的表达式,它的值更倾向于常量。while(received < expected) 优于  while(expected > received)

7.2 if/else 语句块的顺序

   1.首先处理正逻辑,而不是负逻辑。 if(debug)而不是 if(!debug)

   2.先处理简单的逻辑

   3.先处理有趣或者可疑的逻辑

7.3 ?:条件表达式

    简单的逻辑可以用三目运算符,复杂的逻辑可以换为if/else来处理

7.4 避免do/while循环

7.5 从函数中提前返回

7.6 臭名昭著的goto

    避免使用goto

7.7 最小化嵌套

    if(){

        if(){

        }

    }

    else{

    }

    避免这种多层嵌套

   1.通过提前返回来减少嵌套

   2.减少循环内的嵌套

8. 拆分超长的表达式

   核心思想:把你超长的表达式拆分成更容易的小块

8.1 用做解释的变量

    if line.split(‘:’)[0].strip() == “root”:

        …..

拆分:

    username = line.split(‘:’)[0].strip()

    if username == “root”:

        …….

8.2 总结变量

    if(request.user_id == document.owner_id){

       ……

    }

    if条件有太多的变量,可能需要花点时间来理解。改为:

    finial boolean user_owns_document = (request.user_id == document.owner_id)

    if(user_owns_document){

        …….

    }

8.3 使用德摩根

    not(a or b or c)  ==  (not a) and (not b) and (not c)

    not(a and b and c) == (not a) or (not b) or (not c) 

8.4 滥用短路逻辑

    小心“智能”的小段代码

8.5 拆分巨大的语句

9. 变量和可读性

   9.1 减少变量

      1. 没有价值的临时变量

      2. 减少控制流变量

   9.2 缩小变量的作用域

      让你的变量对尽量少的代码行可见 

   9.3 只写一次的变量更好

      操作一个变量的地方越多,越来确定它的当前值。





除非注明,本站文章均为原创。本文基于 BY-NC-SA 协议进行授权,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名 metaboy(包含链接).

本文链接地址: http://blog.wangyuxiong.com/archives/52003

订阅本站:http://www.wangyuxiong.com/feed

分类: 读书笔记         标签:
目前还没有任何评论.

无觅相关文章插件,快速提升流量