目录

1.把控制流变得易读

2.拆分超长的表达式

3.变量与可读性


1.把控制流变得易读

  • 注意条件语句中参数的顺序

一般遵循以下的规则易于理解和阅读。不过在有些语言中,因为可以把赋值语句放在条件中,可能会导致一些bug,所以会调换参数位置,写成

if(NULL == obj) ...

称之为“尤达表示法”,不过在现代编译器中会给出警告,因此这种表示已经是过时的事情了。

  • if/else语句块的顺序

通过考虑条件的反方面来简化块的大小。

默认情况下使用if/else,三目运算符只有在最简单的情况下使用。

  • 避免do/while循环
  • 从函数中提前返回
  • 避免使用goto
  • 减少嵌套的层数

2.拆分超长的表达式

  • 使用用作解释的变量进行拆分
if line.split(':')[0].strip() == "root"://
username = line.split(':')[0].strip()
if username == "root":
  • 使用总结变量

即使一个表达式不需要解释(从命名中能看出意思),使用新的变量去包装它也是有效的,我们把这种变量叫做总结变量。

它的目的是用一个短很多的名字代替一大串代码,便于管理和思考。

  • 使用德摩根定理

  • 拆分巨大的语句

在c++等中可以使用宏来简化语句。

3.变量与可读性

通常情况下,变量越多越难跟踪它们的动向,变量作用域越大跟踪它的动向所需时间更久,变量改动得越频繁越难以跟踪它的当前值。

  • 减少变量

如果一个变量没有拆分任何复杂的表达式,没有对表达式做进一步的解释,或者压缩任何冗余代码,我们可以去除这样的中间变量。

  • 减少中间结果
  • 减少控制流变量
  • 缩小变量的作用域

让变量对尽量小的代码行可见。

只写一次的变量更好。那些只设置一次的变量(const,final,...)使得代码更容易理解。

【编写可读代码的艺术】读书小记 二: 简化循环和逻辑相关推荐

  1. O’Reilly精品图书系列:编写可读代码的艺术].(鲍斯维尔等).尹哲等

    O'Reilly精品图书系列:编写可读代码的艺术].(鲍斯维尔等).尹哲等 A first Course in Logic An Introduction To Model Theory Proof ...

  2. 晒书有礼!《编写可读代码的艺术》(The Art of Readable Code)晒书有礼活动进行中

    值得所有程序员收藏的好书<编写可读代码的艺术>热卖! 为答谢各位读者的关注和支持,华章公司特举办该书的"晒书有礼"活动! 活动时间:2012年7月23日~2012年8月 ...

  3. 晒书有礼!《编写可读代码的艺术》(The Art of Readable Code)晒书有礼活动进行中...

    值得所有程序员收藏的好书<编写可读代码的艺术>热卖! 为答谢各位读者的关注和支持,华章公司特举办该书的"晒书有礼"活动! 活动时间:2012年7月23日~2012年8月 ...

  4. 读书笔记---《编写可读代码的艺术》

    前言 我们曾经在非常成功的软件公司中和出色的工程师一起工作,然而我们所遇到的代码仍有很大的改进空间.实际上,我们曾见到一些很难看的代码,你可能也见过.但是当我们看到写得很漂亮的代码时,会很受启发.好代 ...

  5. 《编写可读代码的艺术》读书笔记

    2019独角兽企业重金招聘Python工程师标准>>> 最近常常来这个网站看看源码,看看博客,觉得只是从中获益,却没有做出自己的一些贡献,最近正好在读<The Art of R ...

  6. 《编写可读代码的艺术》读后总结

    代码应当易于理解 代码的写法应当使他人理解它所需的时间最小化 把信息装进名字中 清晰和精确比装可爱好 使用专业的词 使用详细的名字来更仔细地描写叙述事物 给变量名带上重要的细节 为作用域大的名字採用更 ...

  7. 《编写可读代码的艺术》---变量和可读性

    对变量的草率使用,会导致程序的难以理解,原因是以下几点 变量越多,就越难以全部跟踪他们的动向 变量的作用域越大,就需要跟踪它的动向越久 变量改变的越频繁,就越难以跟踪它的当前值. 下面来讨论如何改善这 ...

  8. 编写可读代码,提高工作效率

    本次分享是怎么做到"可读性"的 首先,正在进行的,说明下本文的可读性. 1.背景 根据今年形势996icu,加班加点的情况比较多.与其抱怨,不如改变. 从内因去改变:主题,编写可读 ...

  9. 编写可读代码(二) 如何命名

    记得看到过一个调查,说程序员最头疼的事情是什么,最后票数最高的是Naming things(http://kb.cnblogs.com/page/192017/).从中不难看出,命名这件往往被初学者忽 ...

最新文章

  1. [WCF] - Odata Service 访问失败,查看具体错误信息的方法
  2. LeetCode 123. Best Time to Buy and Sell Stock III--Python解法--动态规划--数学题
  3. 屏蔽敏感词的正则表达式
  4. Cocos Creator Ui系统
  5. 业界对物联网技术最常见的三大误区解读
  6. gpl2 gpl3区别_GPL的下降?
  7. 使用python制作ArcGIS插件(3)ArcPy的使用说明
  8. 《R Cookbook》中文笔记
  9. 格林积分在多边形截面特性计算的应用
  10. 华为云 远程连接Mysql
  11. [[城市]普及]支付网关,什么是支付网关,第三方支付模式
  12. java get请求 数组_GET方式请求的url参数如果是数组,该形式/base/get?foo[]=barfoo[]=baz'报错......
  13. 用python提取字符串的中英文——建议收藏反复观看
  14. Linux命令行github,Linux命令行下使用GitHub
  15. c/c++编译器配置(交叉编译重要参数)、交叉编译动态库与as配置、mk初步
  16. matlab barrier,使用fmincon函数出现barrier问题
  17. EXCEL中的POWER QUERY功能简介
  18. 【数据仓库学习】 别人家的元数据系统是怎么设计的
  19. java sca_用于Java的SCA客户机和实现模型
  20. 重生后发现高冷女同桌暗恋我!(一)

热门文章

  1. WebAPI Post模式下传递、接收参数的几种方法
  2. STM32的printf函数串口重定义(HAL库和标准库都适用)
  3. 全网最全的Python入门基础教程,超详细。(最新版)
  4. 次氯酸盐溶液增稠剂对稠度的执著已成癖,但似乎并没有坏处
  5. windows平台下获取电脑温度数据
  6. 物理引擎学习07-小游戏飞机大战
  7. java Process.waitFor阻塞
  8. STM32使用电容屏,从查询改为中断
  9. 2012中国新白领十项标准”——工作三五年的你满足了吗?!
  10. python中any()函数用法详解