阅读源代码

时间:2008-11-20 12:11:43

标签: java design-patterns discovery

如果您阅读其他人的源代码,您如何处理代码?您正在寻找什么模式(数据类型,循环,控制流的使用,......)?你能多久阅读其他人的代码而不会觉得无聊?到目前为止,您发现的最激动人心的模式是什么?

6 个答案:

答案 0 :(得分:8)

首先,我忽略了更改代码的冲动。这有时很难做到。但是先理解并稍后改变会为自己省去许多令人讨厌的“学习经历”。

接下来如果格式不好,请重新格式化。如果有代码格式化程序,请使用它。这是因为你倾向于查看缩进,如果这很糟糕,你对代码的理解也是值得怀疑的。

然后,如果有复杂的数据结构,我想画一个小图。这里的挑战是尽可能简单。大型图表在墙上很有趣,但大多数时候,它们看起来很麻烦。所以这是浪费时间。

如果您最终了解一段代码的作用,请撰写评论。这是必不可少的,因为下次你来这里时你不会理解它。

以下步骤是创建单元测试。现在,您不仅可以测试代码,还可以测试您对代码的理解。

最后,如果您了解它并且您知道它可以(并且需要)更好,请更改它。但一定要运行测试。除非你得到每个解决的bug的支付。

答案 1 :(得分:3)

这个时髦的新术语是Code Spelunking

答案 2 :(得分:1)

谢谢,如果我理解正确,第一步是识别上下文,第二步识别API,并将API置于上下文中。我只是觉得它有点像看建筑物或艺术品,你可以专注于所用的材料,或部件的功能,尝试不同的视角,判断零件如何适合整体......有一个很好的作品发现过程:here - how mathematicans think

答案 3 :(得分:1)

除了显而易见的“自上而下的工作”一般方法,它取决于为什么我正在阅读它:代码审查,试图理解一些可用的代码以适应我自己的使用,尝试学习新技术等。

这在很大程度上还取决于语言。如果它是OOPL,我可能会做这样的事情:

  1. 首先查看主要的班级关系,并尝试了解每个班级的主要责任。
  2. 查看类之间的交互,了解它们如何协作。
  3. 查看关键类的接口,了解它们为协作者提供的“服务”。
  4. 了解非平凡的方法,如果了解如何,而不是他们负责的那么重要。

答案 4 :(得分:0)

这完全取决于您正在阅读的代码类型。它是一个Web应用程序,一个服务,一个桌面应用程序?当我开始阅读其他代码时,我通常会开始寻找使用的设计模式。或者针对框架特定的事情。但是,如果您正在进行审核,这也是如此。如果你是为了自己的兴趣阅读并且学到一些东西,那么就没有答案 - 你应该仔细阅读并理解这些代码。

答案 5 :(得分:0)

选择您在最终产品中理解的项目,并查看它是如何组合在一起的。如果你有单元测试,那么他们是一个很好的帮助。

相关问题