Tôi đã đi qua câu trả lời về các chủ đề tương tự ở đây trên SO nhưng could't tìm thấy một câu trả lời thỏa mãn. Vì tôi biết đây là một chủ đề khá lớn, tôi sẽ cố gắng cụ thể hơn.Làm thế nào để viết một chương trình mô-đun linh hoạt với khả năng tương tác tốt giữa các mô-đun?
Tôi muốn viết chương trình xử lý tệp. Việc xử lý là không cần thiết, vì vậy cách tốt nhất là chia các giai đoạn khác nhau thành các mô-đun độc lập mà sau đó sẽ được sử dụng khi cần thiết (vì đôi khi tôi sẽ chỉ quan tâm đến đầu ra của mô-đun A, đôi khi tôi sẽ cần đầu ra của năm mô-đun khác, v.v.). Vấn đề là, tôi cần các mô-đun hợp tác, bởi vì đầu ra của một cái có thể là đầu vào của cái khác. Và tôi cần nó nhanh. Hơn nữa tôi muốn tránh thực hiện xử lý nhất định nhiều lần (nếu module A tạo ra một số dữ liệu cần xử lý bằng mô-đun B và C, tôi không muốn chạy mô-đun A hai lần để tạo đầu vào cho mô-đun B, C) .
Thông tin mà các mô-đun cần chia sẻ chủ yếu sẽ là các khối dữ liệu nhị phân và/hoặc bù trừ vào các tệp được xử lý. Nhiệm vụ của chương trình chính sẽ khá đơn giản - chỉ cần phân tích các đối số, chạy các mô-đun cần thiết (và có thể cung cấp một số đầu ra, hoặc đây có phải là nhiệm vụ của các mô-đun không?).
Tôi không cần mô-đun được tải khi chạy. Nó hoàn toàn tốt để có libs với một tập tin .h và biên dịch lại chương trình mỗi khi có một mô-đun mới hoặc một số mô-đun được cập nhật. Ý tưởng mô-đun ở đây chủ yếu là do khả năng đọc mã, duy trì và có thể có nhiều người làm việc trên các mô-đun khác nhau mà không cần phải có một số giao diện được xác định trước hoặc bất kỳ điều gì (mặt khác, một số "nguyên tắc" về cách viết mô-đun có lẽ sẽ được yêu cầu, tôi biết điều đó). Chúng ta có thể giả định rằng việc xử lý tệp là một hoạt động chỉ đọc, tệp gốc không bị thay đổi.
Ai đó có thể chỉ cho tôi một hướng tốt về cách thực hiện điều này trong C++? Mọi lời khuyên đều được chào đón (liên kết, hướng dẫn, sách pdf ...).
Câu hỏi này là về cơ bản " làm cách nào để viết mã mô-đun "? Vì _all_ code nên được mô-đun, không có gì đặc biệt về C++ ở đây, hoặc về miền vấn đề cụ thể của bạn. và câu trả lời là "bằng cách áp dụng kỹ năng, tài năng và kinh nghiệm". –