2008-11-20 106 views
4

如果您阅读其他人的源代码,您如何处理代码?你在寻找什么模式(数据类型,循环,控制流的使用......)?多久可以阅读其他人的代码而不感到厌倦?到目前为止发现的最令人兴奋的模式是什么?阅读源代码

回答

1

除了一般的做法明显的“从上而下的工作”,这取决于为什么我读它:代码审查,试图了解一点avaialable代码为我所用适应,试图学习新技术等。

它也很大程度上依赖于语言。如果是OOPL,我可能会这样做:

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

这一切都取决于你正在阅读什么类型的代码。它是一个Web应用程序,一项服务,一个桌面应用程序?当我开始阅读其他代码时,我通常会开始寻找使用的设计模式。或者针对框架特定的事情。但是,这又是如果你正在做一个评论。如果您为了自己的兴趣阅读并学习某些东西,那么实际上没有答案 - 您应该仔细阅读并理解代码。

1

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

8

起初,我忽略了改变代码的冲动。这有时很难做到。但先理解后再改变可以为你自己节省很多讨厌的“学习经验”。

接下来如果格式不好,请重新格式化。如果有的话,请使用代码格式化程序。这是因为你倾向于看缩进,如果这样做不好,你对代码的理解也是有问题的。

然后,如果有复杂的数据结构,我喜欢画一个小图。这里面临的挑战是保持尽可能简单。大图在墙上很有趣,但大多数情况下,它们都很麻烦。所以这是浪费时间。

如果您终于明白了一段代码的作用,请发表评论。这是至关重要的,否则下次你来这里时你不会理解它。

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

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

0

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