《The Art of Readable Code》 读书笔记 03

Reorganizing your code

        02中主要探讨如何局部优化代码,即将循环和逻辑结构优化,减少代码的嵌套。

        这章中,将从更大的层次——函数,进行代码的重组,使代码更加易懂。主要从三个方面探讨:

  1. 抽取与函数主旨无关的子问题。
  2. 重组代码使其一次只专心做一件事。(应该类似设计模式的单件吧,烧好一壶水就行)
  3. 现在词法层次描述代码,描述将帮助引导向一个更明了的解决方案。

         最后,将讨论下可以删除全部代码和避免摆在首位写。(FIXME: 翻译不地道!)


        Extracting Unrelated Subproblems

      Advice: 积极识别抽取无关的子问题,意味着:

  1. 问自己,该函数/代码块的高层目标是什么
  2. 审问每一行代码是否和目标直接相关,或者是否在解决一个需要被满足的无关子问题。
  3. 提取解决无关子问题的行,并将其写成一个独立的函数。

      e.g: 冒泡排序需要一个swap函数,这里排序是高层目标,swap是一个无关子问题。这个无关子问题能够复用。

      为啥c/c++难?我觉得就是它的库太少了。它只为程序员提供了低层的函数接口,许多高层功能需要程序员自己编写。因此,学习STL/BOOST就很有必要。同时,作为一个c/c++程序员,应注意平时搜集实用代码段(主要靠平时自己写),建立起“自己的库”。

      调试时编写一些宏/函数来debug是每个程序员常常做的。我比较常用的是追踪编译出错的位置。(代码经常可能编译通过,但是运行错误,就需要用二分法trace出错的位置)。我的做法是:

#ifndef TRACE_ME
#define TRACE_ME
#include <iostream>
#define TRACE (std::cout << "Excute in " << __FILE__ << " line: " << __LINE << std::endl; )
#endif

     上述的宏,就是一个和主要问题无关的子问题(实现跟踪)。

转载于:https://www.cnblogs.com/IntellX/archive/2013/04/13/2909447.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值