【发布时间】:2010-09-23 05:46:30
【问题描述】:
如果您阅读其他人的源代码,您如何处理代码?您在寻找什么模式(数据类型、循环、控制流的使用……)?你能读多久别人的代码而不感到无聊?到目前为止,您发现的最令人兴奋的模式是什么?
【问题讨论】:
标签: java design-patterns discovery
如果您阅读其他人的源代码,您如何处理代码?您在寻找什么模式(数据类型、循环、控制流的使用……)?你能读多久别人的代码而不感到无聊?到目前为止,您发现的最令人兴奋的模式是什么?
【问题讨论】:
标签: java design-patterns discovery
起初,我忽略了更改代码的冲动。这有时很难做到。但先了解后改变可以为自己节省很多讨厌的“学习经历”。
接下来如果格式不正确,请重新格式化。如果有,请使用代码格式化程序。这是因为您倾向于查看缩进,如果这不好,那么您对代码的理解也会有问题。
然后,如果有复杂的数据结构,我喜欢画一个小图。这里的挑战是让它尽可能简单。大图挂在墙上很有趣,但大多数时候,它们看起来很麻烦。所以这是浪费时间。
如果你最终理解了一段代码的作用,请写评论。这是必不可少的,否则你下次来这里就不会明白了。
接下来的步骤是创建单元测试。现在您不仅可以测试代码,还可以测试您对代码的理解。
最后,如果你理解它并且你知道它可以(并且需要)更好,那就改变它。但一定要运行测试。除非您按每个已解决的错误获得报酬。
【讨论】:
一个时髦的新术语是Code Spelunking。
【讨论】:
除了明显的“自上而下工作”的一般方法之外,这取决于 为什么我正在阅读它:代码审查,试图理解一些可用的代码以适应我自己使用、尝试学习新技术等。
这也很大程度上取决于语言。如果是 OOPL,我可能会这样做:
【讨论】:
谢谢,如果我理解正确,第一步是识别上下文,然后识别 API,然后将 API 置于上下文中。我只是意识到这有点像看一座建筑或一件艺术品,你可以专注于使用的材料,或者部件的功能,尝试不同的视角,判断部件如何融入整体......有一件很好的作品发现过程:here - how mathematicans think
【讨论】:
这完全取决于您正在阅读什么类型的代码。它是 Web 应用程序、服务还是桌面应用程序?当我开始阅读其他人的代码时,我通常会开始寻找使用的设计模式。或者对于特定于框架的东西。但是,如果您要进行审查,这也是如此。如果您是为了自己的兴趣而阅读并学习一些东西,那真的没有答案 - 您应该彻底阅读并理解代码。
【讨论】:
在最终产品中选择一个你理解的项目,看看它是如何组合在一起的。如果你有单元测试,那么它们是一个很大的帮助。
【讨论】: