今天查看自己为《专业嵌入式软件开发》一书所写的代码时发现,个别函数由于没有引入中间变量,使代码行既长又不易读。重构前后的代码如下所示。
重构前:
  1. if (TIMER_STARTED == _handle->state_) {
  2. timer_handle_t next;
  3. if (g_timer_next == _handle) {
  4. g_timer_next = (timer_handle_t) dll_next (&g_bucket_firing->dll_,  
  5. &_handle->node_);
  6. }
  7. next = (timer_handle_t)dll_next  
  8. (&g_buckets [_handle->bucket_index_].dll_, &_handle->node_);
  9. if (0 != next) {
  10. next->round_ += _handle->round_;
  11. }
  12. dll_remove (&g_buckets [_handle->bucket_index_].dll_, &_handle->node_);
  13. if (g_buckets [_handle->bucket_index_].reentrance_ > 0) {
  14. g_bucket_firing->level_ ++;
  15. }
  16. }
重构后:
  1. if (TIMER_STARTED == _handle->state_) {
  2. timer_handle_t next;
  3. bucket_t *p_bucket = &g_buckets [_handle->bucket_index_];
  4. if (g_timer_next == _handle) {
  5. g_timer_next = (timer_handle_t) dll_next (&g_bucket_firing->dll_,  
  6. &_handle->node_);
  7. }
  8. next = (timer_handle_t)dll_next (&p_bucket->dll_, &_handle->node_);
  9. if (0 != next) {
  10. next->round_ += _handle->round_;
  11. }
  12. dll_remove (&p_bucket->dll_, &_handle->node_);
  13. if (p_bucket->reentrance_ > 0) {
  14. g_bucket_firing->level_ ++;
  15. }
  16. }

【编程好习惯】引入中间变量使程序更易读相关推荐

  1. pretty-errors:美化python异常输出以使其清晰易读

    pretty-errors:美化python异常输出以使其清晰易读 参考文章: (1)pretty-errors:美化python异常输出以使其清晰易读 (2)https://www.cnblogs. ...

  2. define定义的函数如何引用_C语言快速入门——使用#define让程序更易维护

    与变量在运行时可以通过赋值操作更改这一特性不同,常量是一种在程序执行过程中,其值不发生改变的量.我们目前介绍了int.float.char三种数据类型,与它们相对应的常量分别为整型常量.浮点常量.字符 ...

  3. 9个编程好习惯,优秀的程序员坚持了10年,你能坚持多久?

    1.多看官方文档 不要被这几个字吓到,官方文档其实都是宝藏.一个成熟的技术诞生,可以没有博客没有书籍,但一定会有一个官方文档,毋庸置疑,它一定是最准确.最实时的资料.编写官方文档的人,也通常就是这些技 ...

  4. 面向程序员的精品开源字体:让代码更易读、更美观、更实用

    随着计算机技术的飞速发展,程序员需要处理大量的文本信息,而字体作为信息传达的重要元素,在这个过程中扮演着至关重要的角色.一款精美.实用的字体能够帮助程序员更好地表达自己的思想和感情,提高工作效率和工作 ...

  5. python必背代码-Python高手必修课:如何让 Python 代码更易读,推荐收藏

    " 阅读本文大概需要 10 分钟. " 我们知道 Python 是一种动态语言,在声明一个变量时我们不需要显式地声明它的类型,例如下面的例子:a = 2 print('1 + a ...

  6. Python笔记:文档注释docstrings, 让函数更易读懂

    文档 docstrings 文档字符串是一种注释,用于解释函数的作用以及使用方式,文档字符串用三个引号引起来: def population_density(population, land_area ...

  7. C++为什么空格无法输出_那些C/C++程序员该具备的32个编程修养习惯!

    阅读本文可能需要较长时间. 1.版权和版本 好的程序员会给自己的每个函数,每个文件,都注上版权和版本. 对于C/C++的文件,文件头应该有类似这样的注释: /********************* ...

  8. TensorFlow AI 新品更易用!联手NVIDIA,支持Swift和JavaScript

     整理 | 费棋 出品 | AI科技大本营(公众号ID:rgznai100) 天体物理学家使用 TensorFlow 分析开普勒任务中的大量数据,以发现新的行星: 医学研究人员利用 TensorFl ...

  9. java html提取_2020年全新Java学习路线,含配套资料,更易上手 - 打不过就跑吧

    新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 我在2020年升级了Java学习线路图,硬核升级,免费放送! 学完 ...

  10. 让 Python 代码更易维护的七种武器——代码风格(pylint、Flake8、Isort、Autopep8、Yapf、Black)测试覆盖率(Coverage)CI(JK)...

    让 Python 代码更易维护的七种武器 2018/09/29 · 基础知识 · 武器 原文出处: Jeff Triplett   译文出处:linux中国-Hank Chow    检查你的代码的质 ...

最新文章

  1. JZOJ 100030. 【NOIP2017提高A组模拟7.8】为了爱情
  2. Python IDLE 如何清屏
  3. Maven(6)--archetype
  4. 数据结构的简单理解(2)
  5. spring——autowire自动注入
  6. 多区域OSPF的路由重发布
  7. 玩转shell命令行
  8. 一行代码扫出“敬业福”
  9. C#中要使ListBox使用AddRange()时,能够触发SelectedValueChanged事件
  10. 【原创】Mysql客户端如何处理中文
  11. Android Studio报错:This Gradle plugin requires a newer IDE able to request IDE model level 3
  12. Beyond Compare怎么查看合并文本后相同内容
  13. C# 6 与 .NET Core 1.0 高级编程 - 38 章 实体框架核心(上)
  14. php 斜杠日期 转日期,php日期转时间戳 指定日期转换成时间戳
  15. Vue+element ui+springboot实现用户头像修改
  16. 计算机应用课程的思想教育,计算机应用课程教学改革
  17. MATLAB实现LSBR并采用卡方分析进行分析
  18. nmap识别TCP端口服务的数据库
  19. java整数最大_Java 整数最大值
  20. 用两天整理出来的python英文单词大全,需要的赶快保存啦

热门文章

  1. html++留言板增加删除,实现留言板删除留言的具体思路跟操作
  2. 关于might_sleep的一点说明
  3. 深入Linux网络核心堆栈--netfilter详解(整理)
  4. pythonweb测试_python的web自动化测试
  5. python结构模式_Python程序中的观察者模式结构编写
  6. mysql漏洞如何打补丁_WordPress 5.1 CSRF to RCE 漏洞详解
  7. java 中== equals hashcode源码剖析
  8. redis 实战系列二:用python操作redis集群
  9. sql语句查询执行顺序
  10. 【图论】Bellman_Ford算法求有步数限制的最短路(图文详解)