zoukankan      html  css  js  c++  java
  • 阅读笔记5-代码阅读与实践

    第一章 导论
    1.有选择的阅读代码,要有目标。想学习新的模式、编码风格还是满足某些需求的方法?
    2.充分利用调试器、编译器的警告,系统调用跟踪器、数据库结构化查询语言的日志机制、包转储工具和Windows的信息侦查程序,定位bug
    3.向系统添加新功能时,首要的任务就是找到实现类似特性的代码,将它作为待实现功能的模板。[不能再正确,一般就是最低限度找到类似的功能代码,然后照搬实现现在所需功能。]
    4.阅读代码寻找重构机会时,首先从系统架构开始,然后逐步细化,能够获得最大的效益。

    阅读代码的方式和原因:文献,范例,维护,严谨,重用,检查
    [作者强调了阅读代码时,要带着目标,不要漫无重点。重构时可以从架构开始细化,重用时可以适度扩大粒度。]

    第二章 基本编程元素
    1.第一次分析程序时,main是很好的起点。
    2.[运行,找到重点,基于猜测修改代码时要有验证猜测的流程,比如断言或测试用例。]
    3.养成遇到库元素就去阅读相关文档的习惯,会增强阅读和编写代码的能力。
    4.阅读代码时养成添加注释的习惯

    第三章 高级C数据类型
    1.使用全局或static局部变量的函数大多数情况下不可被重入

    [第二章和第三章介绍了C的语法元素,包括控制语句以及高级特性,见目录。]

    第四章 C数据结构
    [用C语言表示常见数据结构]

    第五章 高级控制流程
    1.推理递归函数时,应从基准范例测试开始,并且论证每次递归调用如何逐渐接近非递归基准测试范例代码。
    2.尾递归调用邓同一个回到函数开始处的循环。
    [从目录看出,介绍的高级控制流程有递归,异常机制,并行,信号和非局部跳转宏替换都C语言针对性强]

    第六章 应对大型项目
    1.通过浏览源代码树来分析一个项目的组织方式。
    2.源代码树经常是该应用程序的部署结构的镜像。
    3.首次接触大项目,要花时间熟悉目录树结构
    4.大型项目的编译过程中的一般声明皆有依赖关系来说明。依赖关系由工具程序转换成具体的编译行为。makefile通常由配置步骤动态生成。
    [大项目相关知识,见目录,包括组织,编译,配置,版本控制,测试等]


    第七章 编码规范和约定
    [良好的开源项目都有其明确规定的风格指南]

    第八章 文档
    1.[文档很重要]尽可能利用任何文档,一小时代码不如一分钟文档。
    2.软件需求说明是阅读和评估代码的基准。
    3.系统的设计规格说明是认知代码结构的路线图
    4.文档还会包含问题和bug

    第九章 架构
    1.深度分析一个构建于某种框架上的应用程序时,最好的方式就是对这个框架本身进行学习。
    [很重要的一章,拍照存,这章介绍的内容比较系统的补缺了我所不太了解的部分。目录也很重要。]

    第十章 代码阅读工具
    [正则表达式,标签,grep,fgrep,diff——都不太理解,并且平台没准备好,因此实验不成功。以后用时再学。]
    1.为了理解复杂的算法或者微妙的数据结构,可以选择一个平和安静的环境,并且全神贯注,不要从计算机或其他机器设备中获得任何帮助。

    第十一章 完整示例
    [很重要的实例,体现了如何在一个大型软件上添加一个小功能(要求很高),以后水平再好一些可以再回头学习和实践。作者详细的呈现了具体过程,包括查找可以参考的函数,如何寻找该函数相关信息,从中找出重点,从各个角度搜索来解决问题。其中解决问题部分,尤其是编译相关的部分。]
    1.沿着类似的实体(类、函数、模块)来对软件进行建模,在相似的现存实体中,挑选具有不寻常名称的一个从而简化代码库中的文本搜索。

    2.任何精确分析代码的企图,通常都会分支处众多的类、文件以及模块,并且快速将你淹没,因此,主动尝试将需要理解的代码减少到最小。

    3.采用广度优先的搜索策略,从多个方向分析代码阅读中的问题,直到其中一个解决为止。

    代码阅读有自身的一套技能,重要的是能够确定什么时候使用哪项技术。在这本书中作者使用600多个现实的例子,向读者展示如何区分好的(和坏的)代码,如何阅读,应该注意什么,以及如何使用这些知识改进自己的代码。养成阅读高品质代码的习惯,可以提高编写代码的能力。

    阅读代码是程序员的基本技能,同时也是软件开发、维护、演进、审查和重用过程中不可或缺的组成部分。本书首次将阅读代码作为一项独立课题,系统性地加以论述。本书引用的代码均取材于开放源码项目——所有程序员都应该珍视的宝库。本书围绕代码阅读,详细论述了相关的知识与技能。“他山之石、可以攻玉”,通过仔细阅读并学习本书,可以快速地提高读者代码阅读的技能与技巧,进而从现有的优秀代码、算法、构架、设计中汲取营养,提高自身的开发与设计能力。

  • 相关阅读:
    10 个深恶痛绝的 Java 异常。。
    为什么公司宁愿 25K 重新招人,也不给你加到 20K?原因太现实……
    推荐一款代码神器,代码量至少省一半!
    Spring Cloud Greenwich 正式发布,Hystrix 即将寿终正寝。。
    hdu 3853 LOOPS(概率 dp 期望)
    hdu 5245 Joyful(期望的计算,好题)
    hdu 4336 Card Collector(期望 dp 状态压缩)
    hdu 4405 Aeroplane chess(概率+dp)
    hdu 5036 Explosion(概率期望+bitset)
    hdu 5033 Building (单调栈 或 暴力枚举 )
  • 原文地址:https://www.cnblogs.com/shenghuizhang/p/8304218.html
Copyright © 2011-2022 走看看