2009-04-22 29 views
15

Tôi muốn nghiên cứu một số mã C/C++ tốt. Mã nên:Gợi ý các ví dụ tuyệt vời về mã C/C++ thực

  1. được tốt trong phong cách và cấu trúc, trình bày thực hành tốt nhất
  2. là một chương trình thực tế đời sống (không phải là một ví dụ hoặc đồ chơi)
  3. không quá lớn vì vậy nó không phải mất thời gian dài để phân tích nó
  4. Windows và/hoặc Unix

tôi biết có 1000s của dự án mã nguồn mở ra ở đó. Nhưng tôi muốn nghe đề xuất của bạn.

Tôi Java lập trình viên và tôi tò mò như thế nào tốt dự án trong c/C++ được cấu trúc (files), granularity của các tầng lớp/chức năng/tác phẩm, tài liệu hướng dẫn/bình luận, xây dựng các công cụ, vv

Nhiều lời đề nghị được hoan nghênh ví dụ đây là ví dụ điển hình của cửa sổ tốt, đó là tốt tinh khiết C, v.v.

+4

Đây phải là Wiki của cộng đồng. –

Trả lời

8

Tôi sẽ đề cập cụ thể memcached. Đó là một ví dụ tuyệt vời về mã khá ngắn, dễ đọc với mục đích rõ ràng.

Thứ hai, tôi muốn giới thiệu số Apache web server. Đây là một dự án mã nguồn mở tuyệt vời mà bạn sẽ học được rất nhiều từ, về ngôn ngữ, cũng như các thực hành thiết kế chung và mạng/luồng.

2

Đây là main file cho relayd, là một daemon xử lý cân bằng tải và chuyển đổi dự phòng. Nó được viết độc đáo, đầy đủ tính năng, mã C sạch. Nó đủ lớn để bạn có cảm giác về một chương trình "thế giới thực", nhưng không quá lớn đến mức bạn không thể có được đầu xung quanh nó với một số công việc. Tuyệt vời cho mã mạng bảo mật, được viết tốt, daemon, v.v.

Ngoài ra, còn có một chút tiling window manager cho X mà tôi đã trợ giúp. Nó khá nhỏ nhưng nó là một wm thực sự, và các lập trình viên khác trên nó có các tiêu chuẩn cao (và giữ tôi với họ!) ... Rất tốt cho việc học các công cụ X cơ bản.

4

Samba: máy chủ mạng lớn, đa nền tảng (POSIX), C tinh khiết, rất phổ biến.

Samba có tốt developer documentation và chính mã cơ sở là rất được tổ chức tốt; Tôi đã không có vấn đề gì lặn vào bất kỳ vị trí nào trong mã để trả lời một câu hỏi mà tôi có về hoạt động bên trong của nó hoặc để theo dõi lỗi.

3

Tôi thấy việc triển khai Lua là nguồn C khá đẹp. Nhưng các ngôn ngữ hơi kỳ quặc như một dự án ví dụ.

+0

Nhiều bộ tài liệu lịch sử (bao gồm cả 5.1.4 hiện tại) có tại http://www.lua.org/ftp/ và có một giao diện web cho bộ nguồn hiện tại tại http://www.lua.org/source /5.1/ – RBerteig

3

Diomidis Spinellis có một số gợi ý trong cuốn sách của ông, "Code Reading: The Open Source Perspective", Addison Wesley, 2003. ISBN 0-201-79940-5.

Có lẽ sách có thể hữu ích cho bạn.

URL http://www.spinellis.gr/codereading/

3

Google's Chromium là khá lớn, nhưng bạn không cần phải phân tích tất cả để đánh giá cao, cấu trúc peer-xem xét sạch của nó. Ngoài ra, đây là một ví dụ điển hình về triển khai môi trường phát triển độc đáo.

+0

cảm ơn đề xuất! Tôi chỉ có thể đánh dấu một câu trả lời là 'chấp nhận', tuy nhiên đề xuất của bạn là dự án thứ 3 tôi sẽ xem xét. – k1udge

-1

Bạn chắc chắn cần phải lựa chọn giữa C hoặc C++. Ví dụ rõ ràng: thực hành tốt cho quản lý lỗi khác nhau rất nhiều.

+0

Tôi đã bỏ phiếu vì đây phải là nhận xét. – nbro

1

K&R có nhiều ví dụ hay về chương trình thực. Ví dụ, trên trang 115 của ấn bản thứ hai có hai cách triển khai đơn giản của lệnh echo. Từ đó, nó có thể là thú vị để xem cách lệnh được thực hiện theo thời gian. Ví dụ: có phiên bản trong nguồn GNU coreutils. Một phiên bản có nguồn gốc từ BSD có thể được tìm thấy trong nguồn BusyBox.

Có thể thú vị khi xem các phiên bản mới hơn so với các ví dụ về sách giáo khoa như thế nào. Tại sao các chương trình được sử dụng trong cuộc sống thực lâu hơn? Bao nhiêu mã có liên quan đến các tính năng mới và bao nhiêu có liên quan đến việc xử lý các trường hợp cạnh? Làm thế nào bạn sẽ viết cùng một mã trong Java?

Các vấn đề liên quan