zoukankan      html  css  js  c++  java
  • 如何去修改一段陌生的代码

    写在这里仅仅是为了备忘

    场景:

    最近的工作中用到使用ffmpeg实现了一些功能,现在有需求的变更,需要修改(重新组合或者拆分)这些功能。

    本人对ffmpeg十分陌生,对我们项目中ffmpeg实现的功能比较熟悉。这是典型的对业务熟,对代码不熟,呵呵。

    1、熟悉功能

    2、不熟悉实现功能的代码

    3、要去修改这些功能(代码)

    通过这几天的工作努力完成这项工作。特总结如下:

    1、理解功能,对功能根据代码的结构进行细化,比如保存文件细化为 编码 + 保存文件

     (功能的细化是根据代码的实现逻辑来的,并不是凭空想象),不需要知道很详细的代码实现细节,宏观上即可。

    2、忽略一些方法,很多方法其实我们只需要知道用在哪个功能里面就好了,比如av_interleaved_write_frame是用在保存文件中的,这样就够了,不需要去深究。因为有的地方(不需要拆分的地方)我们只需要照着原来的做就好了。

    3、找到模块之间的衔接方式(方法,对象等等)如果需要拆分一个大功能的话,比如保存文件拆分为 编码和保存文件。

    4、实现细化之后的模块化。

    这样我们基本上就解决了问题。好吧,通常情况下问问远远没有解决。

    5、模块化之后就是运行程序了。但是这里结果往往不尽如人意。

    6、在做完模块之后,其实我们对那些陌生的模块已经有一定的了解了,这时我们就需要对代码进行更细致的了解,但并不是对所有的部分都要这样,对相关的模块即可。

    7、这时我们对代码已经熟悉了,应该能解决问题了,如果还是不行就到网上查找一些实例代码(不要忽略官网的例子),通过学习demo来深入理解api

    8、不要忘了原有的代码是没有问题的,而且使用场景和现有场景基本完全吻合,所以他也是一个很好的demo

        回过头来看看原有的代码,看看原来的代码和现在的代码有和不同,

    9、调试原来的代码。通过修改原有代码(替换一些api的参数,删减一些函数调用等等)来加深对api的理解,印证自己的想法。

    10、问题这时还没解决,基本上已经陷入其中,先休息一下,之后要把自己抽出来,从宏观上捋清思路,制定策略

    这时对代码基本已经很熟悉了,应该能解决所有的问题了

  • 相关阅读:
    dcokee 安装 nginx
    docker 私有仓库
    docker下的images 保存和导出
    mybatis-puls 字段为null时候的更新问题
    MyBatis-Plus的一些问题
    60万数据的表添加索引查询的速度
    Velocity 模板引擎的应用
    什么是javabean及其用法
    java中this和super关键字的使用
    Windows-AutoHotkey-常用代码保存
  • 原文地址:https://www.cnblogs.com/Haijunzhu/p/5062116.html
Copyright © 2011-2022 走看看