zoukankan      html  css  js  c++  java
  • 《代码阅读》读书笔记(一)

    《代码阅读》读书笔记(一)


    《代码阅读》(《Code Reading The Open Source Perspective》)Diomidis Spinellis 著

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    一. 学习代码阅读的重要性:

     

    1. 在软件开发过程中,有40% 70%的工作量是在系统首次编写完毕后投入的。这些工作一般是阅读、理解、和改动源码。

     

    1. 历史遗留代码的不断积累;

     

    1. 软件复用越来越被重视;

     

    1. 软件公司的人员流动性通常比較高;

     

    1. 开源开发工作和合作开发工作(包含 外包、代码走查、和极限编程)的重要性正在日益增强。

     

        以上这几个因素都使得代码阅读成为project师今时今日不可缺少的技能。可是学校的教学却缺少怎样阅读代码的训练,他们很多其它的关注的是

    怎样从最初的草案開始编敲代码。

     

    二. 怎样选择较高质量的代码:

     

    阅读之前,我们首先要选择要阅读的代码。而选择一些高质量的代码才可以有效的提高你的编程水平。书中给我们讲述了如何鉴别低品质的代码:

    1.编码风格不一致;


    2.结构上毫无道理的复杂或可读性差;


    3.明显的逻辑错误或疏忽。


    4.过度使用不可移植的结构。


    5.缺乏维护。


    尽管作者列了这么几条,但我还是认为。对于我这个新手。通过以上几条来判别代码的优劣还是有难度的,所以初期我还选择一些公认的优秀代码来读比較靠谱。比方说书中所选的各种开源码。

     

    三. 怎样阅读代码:

     

    将代码作为范例:


    定位你所感兴趣的某个功能的代码的位置,然后撇开其余不相关的部分。对它进行研究分析

    假设你认为在原来的上下文中理解代码有困难。你能够将它拷贝到一个暂时文件里。删除全部不相关的部分。这一过程被称为切片


    维护:


    在其它情况下,代码可能不是学习范例。而是须要被修复的。假设自觉得发现了一个大型系统中的 bug,你须要採取一些策略,不断细化对代码的阅读,知道找出问题。

    在这样的情况下。你须要利用一些工具来帮你完毕维护任务。


    演进:


    在多数情况下,代码阅读不是为了修复缺陷,而是为了添加新的功能、改动现有的特性,调整代码使其适应新的环境和需求。抑或是重构以加强代码的非功能性质量。这时能够採用下面策略:


    1.定位到感兴趣的代码部分。


    2.单独了解各个特定的部分。


    3.判断摘选出的代码与其余代码的关系。


    重用:


    代码阅读也可能是为了寻找可供重用的部件。

    这部分代码阅读的关键理念是减少期望值。

     

    检查:


    通过阅读代码找出功能和逻辑上的错误。

    以及代码的非功能性检查(是否符合组织的开发规范和风格?是否有重构的可能性?等等…).

     

    四. 总结:


    通过以上的笔记我们不难发现作者描写叙述的代码阅读的主要方法就是:定位,细读。操作(改动,添加。重构)。检查



    PS. 1.这本书是偶然在图书馆发现的,看了两章后果断自己也入了一本。作者再书中以一些经典的开源码为例,循序渐进的呈现给读者这些开源码的奥秘,各位童鞋们值得一看。

         2.近期一段时间在实习公司參加实习。进公司的第一件事是给了我们他们做过的小系统。让我们去自己研究。

    (木有不论什么文档,凝视基本是少的可怜)。这可不是一件好玩的事情。刚開始我是毫无头绪的一行一行往下看,到最后什么门道也没看出来。知道读了这本书,才算是略微有了点章法,如今进展还不错。

         3.切身体会到,当前这样的时代下。阅读代码的能力绝对是很重要的。


  • 相关阅读:
    This counter can increment, decrement or skip ahead by an arbitrary amount
    LUT4/MUXF5/MUXF6 logic : Multiplexer 8:1
    synthesisable VHDL for a fixed ratio frequency divider
    Bucket Brigade FIFO SRL16E ( VHDL )
    srl16e fifo verilog
    DualPort Block RAM with Two Write Ports and Bytewide Write Enable in ReadFirst Mode
    Parametrilayze based on SRL16 shift register FIFO
    stm32 spi sdcard fatfs
    SPI bus master for System09 (2)
    SQLSERVER中的自旋锁
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/6805139.html
Copyright © 2011-2022 走看看