如何阅读修改代码

简介: 开发职业生涯中,每个人除了操刀进行全新的设计开发外,更多的时间是在进行代码的阅读和维护,也就是我们常遇到的所谓遗留代码,对于遗留代码的问题,如何掌握和修改是需要一定的知识和经验积累的,幸好前辈们已经提供了很多的阅读图书,借助这些知识,站在前人的肩膀上,我们可以看的更远,走的更远。

开发职业生涯中,每个人除了操刀进行全新的设计开发外,更多的时间是在进行代码的阅读和维护,也就是我们常遇到的所谓遗留代码,对于遗留代码的问题,如何掌握和修改是需要一定的知识和经验积累的,幸好前辈们已经提供了很多的阅读图书,借助这些知识,站在前人的肩膀上,我们可以看的更远,走的更远。

代码阅读

已有的公司的私有代码阅读

如果内部有文档和历史负责人的话,这个最好办,只要和对应的师傅进行求教和学习即可。

然而大部分情况是遗留代码都是比较混乱,文档和代码不匹配等种种问题,此时只能是分析和验证进行熟悉,综合使用静态分析、动态分析的方式进行处理,如下的几个工具可以辅助进行

v Source Insight

n 可以查看代码的关联关系和应用等各种内容

v Visual Studio建模工具/Together工具

n 对于类图、时序图等可以自动反向工程[从代码生成图形],方便理解

开源软件

由于现在开源软件的蓬勃发展,现在很多产品和项目中使用了开源的工具和软件等,对于此类,需要注意

如果开源的文档和社区比较完善的话,那这方面的资料相对都是非常完善的,只要精通这些基本可以掌握了。

相对不太完善的就需要花功夫学习了,此时英语社区非常有用,如stackoverflow等,在这些社区提问和阅读别人的使用经验可谓事半功倍。

但由于在引用这些软件的时候,由于版本的差异,这个问题需要特别注意,否则有时会出现,自己花费了较长的时间解决的问题,其实在新的版本中已经提供了解决方案了。具体和新的版本合并升级的问题可以使用如下的工具辅助比较差异。

v Beyond Compare

v Diff

版本升级特别需要注意兼容性的问题,在进行之前一定要使用TDD进行可用性的验证。

参考图书

“代码阅读” http://product.china-pub.com/18134

这个提供了对开源软件的阅读方法的指导。

代码修改

代码读懂了,理解了,那就要进行代码的修改了,代码的修改其实主要是下面的原因:

v 新增功能

v 修改bug

v 改善或完善:改善设计或优化资源使用

真正操刀的话,需要“胆大心细”,并配合相关的辅助措施。

首先是针对理解的内容构建单元测试,覆盖的幅度越大越好,那么下一步

v 胆大:对现有的代码外味道要敢于修改,否则Bad Smell的这些代码会变成越来越大的维护梦魇

v 心细:通过单元测试小小步迭代,对兼容等问题已经要有多种准备和实施步骤

参考图书

重构 http://product.china-pub.com/196374 

修改代码的艺术 http://product.china-pub.com/36363

相关文章
|
5月前
|
设计模式 JavaScript 前端开发
|
9月前
|
缓存 算法 安全
程序员写代码为什么要阅读源码?
阅读一篇技术文章,畅聊一个技术话题。本期文章推荐的是《Node 中的 AsyncLocalStorage 的前世今生和未来》,一起来聊聊开发者阅读源码的这件事。阅读源码的过程实质上是对软件构建技术和架构深度的一种持续学习和理解。阅读源码可以揭示代码的内在逻辑,可以对技术深度的理解,也能提高对技术的理解程度。然而,仅仅阅读源码并不能代替实践操作,因为通过实践,可以更加全面的理解代码的深度和进展。
101 1
|
10月前
|
编译器 程序员 C语言
C++入门(内容补充)
之前给大家更新了一系列关于C++的基础语法,那么今天小编再给大家进行部分内容的补充,然后我们马上就会进入类有关内容的介绍。
44 0
|
编解码 算法 Java
java编程中遇到的部分问题【点击文中参考解答】
java编程中遇到的部分问题【点击文中参考解答】
142 0
|
前端开发
前端知识学习案例9vs code-复制操作
前端知识学习案例9vs code-复制操作
45 0
前端知识学习案例9vs code-复制操作
|
前端开发
前端知识学习案例13vs code-添加注释
前端知识学习案例13vs code-添加注释
31 0
前端知识学习案例13vs code-添加注释
|
小程序 JavaScript
讲述小程序之其他常用内容
讲述小程序之其他常用内容
79 0
讲述小程序之其他常用内容
|
存储 搜索推荐 Java
怎么阅读源码【调试观察源码】
怎么阅读源码【调试观察源码】
143 0
怎么阅读源码【调试观察源码】
|
Java
Java源码阅读(不断补充)
Java源码阅读(不断补充)
90 0
|
编译器 C语言 数据安全/隐私保护
C++day12笔记无代码
C++day12笔记
309 0

相关实验场景

更多