zoukankan      html  css  js  c++  java
  • 一些代码阅读的方法

    1 - 初始能力

    让阅读思路清晰连贯,保持在程序的流程架构和逻辑实现上,不被语法、编程技巧和业务流程等频繁地阻碍和打断。

    • 语言基础:熟悉基础语法,常用的函数、库、编程技巧等;
    • 了解设计模式、构建工具、代码风格;
    • 了解业务背景和逻辑;

    即便此时,还不具备完全理解代码的能力,但通过接触这些代码,至少可以熟悉项目的样貌。

    2 - 工具使用

    3 - 准备动作

    明确问题与需求:

    • 为什么要阅读源代码?要解决什么具体问题?要达到怎样的程度和效果?
    • 当前状态(初始能力、资源投入等)如何?是否足够支撑开始并完成这样的代码阅读?
    • 没有目标和无法完成的阅读,就难以获得实际的收获;
    1. 对于知名项目,收集规整已有的代码分析资料;
    2. 确认辅助信息来源:官方文档、项目文档、搜索引擎等;
    3. 确认代码版本(早期版本或当前能够理解的版本)和编码风格;
    4. ......

    4 - 一些方法和注意事项

    “因地制宜,因人而异”。
    问题需求、资源投入、项目状态的不同,适用的阅读方法和工具自然也就不同。
    直接啃代码的方式适合解决具体的细节问题,简单粗暴,速度快效果好。
    但如果想完整而深入地了解一个有规模和难度的项目,又该如何进行呢?

    一些方法:

    • 阅读“README”;
    • 通过查看提交和版本日志,研读所关注的功能和优化;
    • 搭建测试环境并运行Demo或示例,观察运行状态,从外部了解核心功能和运行方式,形成总体认知;
    • 善用文档:quickstart、tutorial等内容中的示例往往是非常有效的了解途径;
    • 整体把握,分层阅读:先整体后局部,借助工具生成UML图或流程图等,从整体了解代码结构和调用关系,确定阅读的层次和顺序;
    • 寻找程序入口,根据实际情况确定阅读的切入点;
    • 逐行或者逐个函数跟踪变量值;
    • 为代码写注释,解释各个函数的使用方法,各个变量的用途,以及任何其它方面的内容,只要能帮助理解代码即可。必要时形成文档;
    • 问题列表:记录疑问和问题并归纳成表,解决问题的过程也就是代码逐渐清晰的过程;
    • 查看单元测试,编写测试用例,抛异常,Debug所关注的执行过程,观察现象和日志,明确调用关系和执行路径;
    • 它山之石,可以攻玉。借鉴代码,解决当前实际问题。
    • ......

    注意事项:

    • 带着问题与需求阅读代码,围绕根本和主干,没有必要通读源码,更不应该沉陷于细节;
    • 必要时略过难以理解的地方,不过度纠结于某一行某一段;
    • 理解项目作者的思考方式,
    • 低头专注代码,抬头思考架构,从整体的角度来看待局部实现的过程;
    • ......

    5 - 下一步

    • 迭代式理解
      软件是成长起来的,而不是搭建完成的。
      对项目代码的理解,只是当时的理解,受限于当时的技能水平,知识结构,资源投入,甚至是身心状态。
      经过一段时间磨砺和成长,回头再阅读同样的项目代码,往往会有新的发现和理解。

    • 改善适用性
      “学以致用”是获得知识技能的最有效途径之一。
      实现自己的需求和想法,最终形成更适合的版本。
      在现有“轮子”的基础上去制造“一个更完善轮子”,在这样的二次开发过程中,可以验证代码理解。

    • 获得建议与批判
      落后的起源是“故步自封”、“自以为是”和“自欺欺人”。
      归纳并分享你的理解,会获得更全面更专业更中肯的建议与批判。
      争议之中,也恰恰隐含着成长与改变的线索与机遇。

    6 - 多余的话

    每个人都是某一方面的菜鸟,某一细节的白痴。
    It’s not the languages that matter but what you do with them.(编程语言这东西并不重要,重要的是你用这些语言做的事情。)

  • 相关阅读:
    云纵持续交付环境管理进化历程
    #研发解决方案#数据移山:接入、迁移、同步一站式
    如何快速判断一个人水平高低
    成长秘笈:是你教我,不是我教你
    年轻的工程师如何月入伍万XD
    Uber是如何重新思考GPS定位的(尤其是在城市峡谷中)
    当我们谈重构的时候我们想谈什么?
    #研发解决方案#异地多活让商户无感知
    乱是一种什么体验?
    新年技术团队寄语
  • 原文地址:https://www.cnblogs.com/anliven/p/7545983.html
Copyright © 2011-2022 走看看