【编写可读代码的艺术】读书小记 二: 简化循环和逻辑
目录
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,...)使得代码更容易理解。
【编写可读代码的艺术】读书小记 二: 简化循环和逻辑相关推荐
- O’Reilly精品图书系列:编写可读代码的艺术].(鲍斯维尔等).尹哲等
O'Reilly精品图书系列:编写可读代码的艺术].(鲍斯维尔等).尹哲等 A first Course in Logic An Introduction To Model Theory Proof ...
- 晒书有礼!《编写可读代码的艺术》(The Art of Readable Code)晒书有礼活动进行中
值得所有程序员收藏的好书<编写可读代码的艺术>热卖! 为答谢各位读者的关注和支持,华章公司特举办该书的"晒书有礼"活动! 活动时间:2012年7月23日~2012年8月 ...
- 晒书有礼!《编写可读代码的艺术》(The Art of Readable Code)晒书有礼活动进行中...
值得所有程序员收藏的好书<编写可读代码的艺术>热卖! 为答谢各位读者的关注和支持,华章公司特举办该书的"晒书有礼"活动! 活动时间:2012年7月23日~2012年8月 ...
- 读书笔记---《编写可读代码的艺术》
前言 我们曾经在非常成功的软件公司中和出色的工程师一起工作,然而我们所遇到的代码仍有很大的改进空间.实际上,我们曾见到一些很难看的代码,你可能也见过.但是当我们看到写得很漂亮的代码时,会很受启发.好代 ...
- 《编写可读代码的艺术》读书笔记
2019独角兽企业重金招聘Python工程师标准>>> 最近常常来这个网站看看源码,看看博客,觉得只是从中获益,却没有做出自己的一些贡献,最近正好在读<The Art of R ...
- 《编写可读代码的艺术》读后总结
代码应当易于理解 代码的写法应当使他人理解它所需的时间最小化 把信息装进名字中 清晰和精确比装可爱好 使用专业的词 使用详细的名字来更仔细地描写叙述事物 给变量名带上重要的细节 为作用域大的名字採用更 ...
- 《编写可读代码的艺术》---变量和可读性
对变量的草率使用,会导致程序的难以理解,原因是以下几点 变量越多,就越难以全部跟踪他们的动向 变量的作用域越大,就需要跟踪它的动向越久 变量改变的越频繁,就越难以跟踪它的当前值. 下面来讨论如何改善这 ...
- 编写可读代码,提高工作效率
本次分享是怎么做到"可读性"的 首先,正在进行的,说明下本文的可读性. 1.背景 根据今年形势996icu,加班加点的情况比较多.与其抱怨,不如改变. 从内因去改变:主题,编写可读 ...
- 编写可读代码(二) 如何命名
记得看到过一个调查,说程序员最头疼的事情是什么,最后票数最高的是Naming things(http://kb.cnblogs.com/page/192017/).从中不难看出,命名这件往往被初学者忽 ...
最新文章
- [WCF] - Odata Service 访问失败,查看具体错误信息的方法
- LeetCode 123. Best Time to Buy and Sell Stock III--Python解法--动态规划--数学题
- 屏蔽敏感词的正则表达式
- Cocos Creator Ui系统
- 业界对物联网技术最常见的三大误区解读
- gpl2 gpl3区别_GPL的下降?
- 使用python制作ArcGIS插件(3)ArcPy的使用说明
- 《R Cookbook》中文笔记
- 格林积分在多边形截面特性计算的应用
- 华为云 远程连接Mysql
- [[城市]普及]支付网关,什么是支付网关,第三方支付模式
- java get请求 数组_GET方式请求的url参数如果是数组,该形式/base/get?foo[]=barfoo[]=baz'报错......
- 用python提取字符串的中英文——建议收藏反复观看
- Linux命令行github,Linux命令行下使用GitHub
- c/c++编译器配置(交叉编译重要参数)、交叉编译动态库与as配置、mk初步
- matlab barrier,使用fmincon函数出现barrier问题
- EXCEL中的POWER QUERY功能简介
- 【数据仓库学习】 别人家的元数据系统是怎么设计的
- java sca_用于Java的SCA客户机和实现模型
- 重生后发现高冷女同桌暗恋我!(一)