今天我只是出于好奇检查了一些开源项目。所以过了一会儿,我查看了 OTTD 的代码(http://www.openttd.org/),我只是不知道从哪里开始寻找或如何理解该项目。我知道你不可能在一两天内熟悉这么大的项目,但是你们如何处理这些事情你从哪里开始你在寻找什么等等等等..
4 回答
OpenTTD 的源文档:http: //docs.openttd.org/,它们会很有帮助。
此外,开发 wiki:http ://wiki.openttd.org/Development 。
如何熟悉?
首先,尝试编译。将其编译到您的平台并确保其正常运行。
然后,从待办事项列表中挑选一个错误或其他东西并尝试实施它,或者只是玩游戏并考虑添加/更改一些简单的东西。当然,您可能会失败并想改变您的任务,但每次尝试都是了解项目结构的一步。
对我来说,编译部分是最烦人的部分。我认为这是因为我在 Windows 上 :-) 如果没有几天的思考和向人们发送垃圾邮件等,我几乎无法从头开始编译一些东西。但我很快就习惯了许多不需要编译的项目,比如用 PHP 或 Python 或 JavaScript 编写。
我只是对代码做了一些事情。更改了一些重要的常量 :-) 编写插件。任何。有一天我明白了,如果我从问题跟踪器中选择几乎任何任务,我至少能够找出问题所在。
如果你只是阅读代码,你不会很了解它!即使是(好)小说也不能通过一遍又一遍地阅读来完全理解。
下载代码。
在您最喜欢的 IDE 中设置它,以便它构建和运行。
在 main() 开头设置断点
花一些高质量的时间在调试器中单步执行:)
让您很好地了解事物的组合方式、依赖关系的位置以及在应用程序中执行操作时会发生什么。
另一个好的策略是从你使用的一些软件开始,甚至是你依赖的软件。然后找到最烦人的错误,并修复它。
很多时候,拥有大量草稿纸或某种形式的快速图表工具会有所帮助——当你遇到事物时,勾勒出它们之间的关系。随着时间的推移,您将了解事物是如何布局的以及什么与什么交互,有点像临时类图(但形式更自由)。
选择一个您可以识别的起点:也许这是用户输入处理,也许是程序的初始化序列 - 并从那里跟踪执行流程以了解事情是如何发生的。
希望源代码有有用的注释——在 OpenTTD 的案例中,甚至可能是 doxygen 风格的注释,所以你可以获得一组很好的文档。