【问题标题】:Reading source code [closed]阅读源代码[关闭]
【发布时间】:2010-09-23 05:46:30
【问题描述】:

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

【问题讨论】:

    标签: java design-patterns discovery


    【解决方案1】:

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

    接下来如果格式不正确,请重新格式化。如果有,请使用代码格式化程序。这是因为您倾向于查看缩进,如果这不好,那么您对代码的理解也会有问题。

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

    如果你最终理解了一段代码的作用,请写评论。这是必不可少的,否则你下次来这里就不会明白了。

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

    最后,如果你理解它并且你知道它可以(并且需要)更好,那就改变它。但一定要运行测试。除非您按每个已解决的错误获得报酬。

    【讨论】:

      【解决方案2】:

      一个时髦的新术语是Code Spelunking

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          【解决方案4】:

          谢谢,如果我理解正确,第一步是识别上下文,然后识别 API,然后将 API 置于上下文中。我只是意识到这有点像看一座建筑或一件艺术品,你可以专注于使用的材料,或者部件的功能,尝试不同的视角,判断部件如何融入整体......有一件很好的作品发现过程:here - how mathematicans think

          【讨论】:

            【解决方案5】:

            这完全取决于您正在阅读什么类型的代码。它是 Web 应用程序、服务还是桌面应用程序?当我开始阅读其他人的代码时,我通常会开始寻找使用的设计模式。或者对于特定于框架的东西。但是,如果您要进行审查,这也是如此。如果您是为了自己的兴趣而阅读并学习一些东西,那真的没有答案 - 您应该彻底阅读并理解代码。

            【讨论】:

              【解决方案6】:

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-02-22
                • 2013-10-09
                • 1970-01-01
                • 2019-04-16
                相关资源
                最近更新 更多