Hôm nay tôi đã thực hiện thanh toán một số dự án nguồn mở chỉ vì tò mò. Vì vậy, sau một thời gian tôi đã nhìn vào mã của OTTD (http://www.openttd.org/), tôi chỉ không biết bắt đầu tìm kiếm ở đâu hoặc làm thế nào để hiểu dự án. Tôi biết bạn không thể làm quen với các dự án lớn như vậy trong một hoặc hai ngày, nhưng làm thế nào để các bạn xử lý những thứ như vậy nơi bạn bắt đầu những gì bạn tìm kiếm etcetera etcetera ..Làm cho bạn quen thuộc với các dự án
Trả lời
Documents for the source of OpenTTD: http://docs.openttd.org/, chúng sẽ hữu ích.
Ngoài ra, dev wiki: http://wiki.openttd.org/Development.
Làm thế nào để làm quen?
Trước tiên, hãy thử biên dịch. Biên dịch nó cho nền tảng của bạn và đảm bảo nó chạy đúng.
Sau đó, nhận lỗi hoặc thứ gì đó từ danh sách công việc phải làm và cố gắng triển khai hoặc chỉ chơi trò chơi và suy nghĩ về việc thêm/thay đổi điều gì đó đơn giản. Tất nhiên bạn có thể thất bại và muốn thay đổi nhiệm vụ của mình, nhưng mọi nỗ lực sẽ là một bước để hiểu được cấu trúc của một dự án.
Đối với tôi, phần biên dịch là phần khó chịu nhất. Tôi nghĩ rằng đó là bởi vì tôi đang ở trên Windows :-) Tôi đã hầu như không bao giờ quản lý để biên dịch một cái gì đó từ đầu mà không có ngày suy nghĩ và gửi thư rác người vv Nhưng tôi nhanh chóng quen với nhiều dự án mà không cần phải được biên soạn, như vậy như được viết bằng PHP hoặc Python hoặc JavaScript.
Tôi vừa làm điều gì đó với mã. Đã thay đổi một số hằng số quan trọng :-) Viết plugin. Bất cứ điều gì. Và một ngày tôi hiểu rằng bây giờ, Nếu tôi chọn hầu như bất kỳ nhiệm vụ nào từ bộ theo dõi vấn đề, tôi sẽ có thể tìm ra ít nhất là vấn đề nằm ở đâu.
Nếu bạn chỉ đọc mã, bạn sẽ không biết rõ! Ngay cả những cuốn sách hư cấu (tốt) cũng không thể được hiểu đầy đủ chỉ bằng cách đọc chúng lặp đi lặp lại.
Rất nhiều lần giúp có nhiều giấy cào, hoặc một số công cụ lập biểu đồ nhanh - khi bạn bắt gặp mọi thứ, hãy phác họa cách chúng liên quan với nhau. Theo thời gian, bạn sẽ có được một cảm giác như thế nào những điều được đặt ra và những gì tương tác với những gì, loại giống như một sơ đồ lớp học đặc biệt (nhưng nhiều hơn nữa tự do).
Chọn điểm bắt đầu ở đâu đó mà bạn có thể xác định: có thể đây là quá trình xử lý đầu vào của người dùng, có thể đó là chuỗi khởi tạo cho chương trình - và theo dõi luồng thực thi từ đó để có ý tưởng về cách mọi thứ xảy ra.
Hy vọng rằng, mã nguồn có các nhận xét hữu ích - thậm chí có thể trong trường hợp của OpenTTD, các nhận xét kiểu doxygen, vì vậy bạn có thể nhận được set of docs tốt đẹp cho nó.
Tải xuống mã.
Thiết lập nó trong IDE yêu thích của bạn để nó xây dựng và chạy.
Đặt một breakpoint ở phần đầu của main()
Dành thời gian chất lượng bước qua trong debugger :)
Cung cấp cho bạn một cảm giác tốt về cách thức điều được đặt lại với nhau, nơi phụ thuộc và những gì sẽ xảy ra khi bạn làm những việc trong ứng dụng.
Một chiến lược hay khác là bắt đầu từ một số phần mềm mà bạn sử dụng, ngay cả khi bạn dựa vào. Sau đó, tìm lỗi gây phiền nhiễu nhất và sửa nó.
- 1. Ý tưởng cho các dự án đồ chơi nào đó để làm quen với Cocoa và Cocoa Touch
- 2. Làm quen với Google Guice
- 3. mercurial cho các dự án hệ điều hành và svn cho các dự án doanh nghiệp?
- 4. Làm việc với các dự án XPath Nested ... Tinh chỉnh
- 5. Làm thế nào để bạn tạo các dự án Xcode lai cho Mac & iPhone?
- 6. Làm thế nào để bạn quản lý giấy phép của các phụ thuộc (thư viện) của dự án của bạn?
- 7. Bạn có quen thuộc với thẻ <ins> trong html không?
- 8. Kiểm tra SBT-phụ thuộc vào Multiprojects: Làm cho mã kiểm tra có sẵn cho các dự án phụ thuộc
- 9. Sử dụng Git với dự án CakePHP của bạn
- 10. Làm cách nào để sắp xếp các gói của bạn trong các dự án Symfony2?
- 11. Làm mới dự án Eclipse với Ant
- 12. Git submodule mess: cách sử dụng git submodules với các nhà phát triển không quen thuộc với git?
- 13. Làm thế nào để có phụ thuộc dự án khác nhau cho mỗi cấu hình dự án?
- 14. Thuộc tính mức dự án MSBuild cho Delphi là gì?
- 15. Làm cách nào để tải xuống các nguồn phụ thuộc cho dự án Gradle trong IDEA?
- 16. Cách tổ chức các dự án Java lớn hơn - Dự án so với Không gian tên?
- 17. Đặt dự án mặc định cho các dự án VB.NET sao cho thuộc tính Modifiers mặc định cho điều khiển là Private
- 18. Làm thế nào để bạn nói với Visual Studio loại dự án từ một dự án Visual Studio hiện
- 19. Emacs làm IDE cho các dự án lớn C + +
- 20. Ant xây dựng dự án Android với phụ thuộc lib
- 21. Tệp dự án cho Notepad ++?
- 22. Phụ thuộc dự án Web Eclipse
- 23. Gradle và nhiều dự án với sự phụ thuộc Roboguice
- 24. Quy ước đặt tên cho các dự án mới
- 25. Cố gắng hiểu các thuộc tính của dự án gradle
- 26. Bạn có thể xóa các dự án appengine không?
- 27. Làm cách nào để thiết lập dự án thử nghiệm cho dự án plugin Eclipse
- 28. Maven cho các dự án web tĩnh
- 29. "Phương pháp hay nhất" của bạn cho dự án Java EE Spring đầu tiên là gì?
- 30. Làm việc với nhiều dự án
Bất kể bạn làm gì, bạn cũng nên lưu nhật ký ghi chú (xây dựng các dòng lệnh bạn chạy, chức năng bạn truy tìm, ý tưởng bạn có, v.v.) Nó không chỉ giúp bạn nếu bạn quên, nhưng bạn cũng có thể đóng góp chúng vào wiki của dự án hoặc tạo một bài đăng trên blog của riêng bạn về những phát hiện của bạn. – HostileFork