2010-04-04 24 views
5

Nhóm của chúng tôi đang chuyển sang các dự án có quy mô lớn hơn nhiều, nhiều dự án sử dụng một số dự án mã nguồn mở bên trong chúng.Lời khuyên cho việc giữ mô-đun dự án C++ lớn?

Bất kỳ lời khuyên hay phương pháp hay nhất nào để giữ cho thư viện và phụ thuộc tương đối có mô-đun và dễ dàng nâng cấp khi phát hành bản mới cho chúng?

Nói cách khác, giả sử bạn tạo một chương trình là một nhánh của dự án nguồn mở. Khi cả hai dự án đều phát triển, cách dễ nhất để duy trì và chia sẻ cập nhật cho lõi là gì?

Lời khuyên về những gì tôi chỉ yêu cầu ... Tôi không cần "bạn nên làm điều này thay vì" hoặc "tại sao bạn" .. cảm ơn.

+0

Một công ty mà tôi đã kết thúc trên phiên bản Bugzilla cũ không được hỗ trợ trong nhiều năm, vì những thay đổi tương đối nhỏ mà không thể hợp nhất một cách sạch sẽ với các thay đổi ngược dòng. Không ai có thời gian để phân loại nó. Tất nhiên nếu chúng ta cần những thay đổi ngược dòng, chúng tôi đã tìm thấy thời gian, nhưng đạo đức của câu chuyện là nếu bạn ngã ba, sau đó bạn cuối cùng sẽ nhấn một trường hợp đó là * không * "dễ dàng nâng cấp". Thay vì cố gắng tránh điều đó xảy ra, hãy cố gắng giảm thiểu tần suất xảy ra. –

+0

IMO này thuộc về Programmars.SE, nhưng vì nó quá cũ để cho phép di chuyển, tôi chỉ cần bỏ phiếu để đóng. – o11c

Trả lời

6

Với dòng vô tính các dự án mã nguồn mở, một trong những cơn đau đầu lớn nhất của bạn sẽ được giữ đồng bộ/vá theo các nguồn ngược dòng. Bạn có thể không quan tâm đến các tính năng mới, nhưng bạn chắc chắn sẽ cần các bản sửa lỗi quan trọng được áp dụng.

Đề xuất của tôi sẽ cẩn thận bao bọc các dự án bên trong đó vào thư viện được chia sẻ, vì vậy bạn có thể nâng cấp không ít những phần đó nếu ABI không bị hỏng do thay đổi.

Một điều nữa - nếu bạn tìm và sửa lỗi trong dự án nguồn mở - đừng giữ bản sửa lỗi cho chính mình. Đẩy các bản vá ngược lên trên. Điều đó sẽ làm cho dự án tốt hơn và sẽ giúp bạn tiết kiệm được nhiều ngày khi hợp nhất với một phiên bản mới.

+0

+1 cho gói - ý tưởng tốt để bao bọc tất cả các phụ thuộc của bạn. – AshleysBrain

+0

Lời khuyên tuyệt vời! Cảm ơn! – Jay

+0

+1 vì đề xuất đẩy lùi các bản vá lỗi: ngay cả khi bạn không muốn chia sẻ, hãy nghĩ rằng bạn sẽ nhận được hỗ trợ cộng đồng trên các bản vá của riêng mình sau đó, vì vậy thực sự không có lý do gì để không. –

4

Trong thứ tự ưu tiên

  1. Hãy càng ít thay đổi càng tốt để các thư viện của bên thứ ba. Hãy thử và nhận được xung quanh giới hạn của họ trong mã của bạn. Ghi lại các thay đổi của bạn và sau đó gửi một bản vá.
  2. Nếu bạn không thể vượt qua giới hạn của họ, hãy gửi thay đổi của bạn dưới dạng bản vá (điều này có thể là lý tưởng với tốc độ băng giá của một số dự án).
  3. Nếu bạn không thể thực hiện một trong những điều đó, hãy ghi lại những gì bạn đã thay đổi ở vị trí tập trung để người nghèo thực hiện tích hợp cho các phiên bản mới có thể tìm ra bạn đang làm gì và vẫn cần thiết.

1 và 2 được ưu tiên (tuy nhiên, nhanh và rất chậm), trong khi tùy chọn thứ ba sẽ chỉ dẫn đến đau đầu và lỗi khi mã cơ sở của bạn lệch khỏi cơ sở mã của phụ thuộc. Trong mã của tôi, tôi thậm chí không có mã bên thứ 3 được nạp trong IDE trừ khi tôi phải nghiên cứu một tệp tiêu đề. Điều này loại bỏ sự cám dỗ để thay đổi những thứ không phải của tôi.

Theo mô đun mô-đun và điều này giả sử bạn đang sử dụng thư viện của bên thứ ba tương đối ổn định, chỉ có chương trình cho giao diện công khai. Chỉ vì bạn có nguồn không có nghĩa là bạn phải sử dụng nó trên tất cả các mã của bạn. Điều này sẽ cho phép cập nhật về cơ bản là kéo và thả. Bây giờ, điều này là hoàn toàn lý tưởng nhưng những gì tôi phấn đấu với mã tôi làm việc trên.

+0

Cảm ơn lời khuyên của bạn! – Jay

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