Thực hành tốt là không lo lắng về chiến lược tiêu đề của bạn miễn là nó được biên dịch.
Phần tiêu đề của mã của bạn chỉ là một khối các dòng mà không ai nên nhìn vào cho đến khi bạn gặp một lỗi biên dịch dễ dàng giải quyết. Tôi hiểu mong muốn cho phong cách 'chính xác', nhưng không cách nào thực sự có thể được mô tả là chính xác. Việc bao gồm một tiêu đề cho mọi lớp có nhiều khả năng gây ra các lỗi biên dịch dựa trên thứ tự gây phiền nhiễu, nhưng các lỗi biên dịch đó cũng phản ánh các vấn đề mà mã hóa cẩn thận có thể khắc phục (mặc dù có thể cho rằng chúng không đáng để dành thời gian để sửa).
Và vâng, bạn sẽ có những vấn đề dựa trên đơn hàng khi bạn bắt đầu vào friend
đất liền.
Bạn có thể nghĩ về vấn đề trong hai trường hợp.
Trường hợp 1: Bạn có một số lượng nhỏ các lớp tương tác với nhau, nói chưa đến một tá. Bạn thường xuyên thêm vào, xóa khỏi và sửa đổi các tiêu đề này theo những cách có thể ảnh hưởng đến sự phụ thuộc của chúng vào nhau. Đây là trường hợp mà ví dụ mã của bạn gợi ý.
Tập hợp các tiêu đề đủ nhỏ để không giải quyết bất kỳ vấn đề nào phát sinh. Bất kỳ vấn đề khó khăn nào đều được khắc phục bằng cách viết lại một hoặc hai tiêu đề. Lo lắng về chiến lược tiêu đề của bạn là giải quyết các vấn đề không tồn tại.
Trường hợp 2: Bạn có hàng tá lớp học. Một số lớp đại diện cho xương sống của chương trình của bạn và viết lại các tiêu đề của chúng sẽ buộc bạn phải viết lại / biên dịch lại một lượng lớn cơ sở mã của bạn. Các lớp khác sử dụng xương sống này để hoàn thành mọi việc. Điều này đại diện cho một thiết lập kinh doanh điển hình. Các tiêu đề được trải đều trên các thư mục và bạn thực sự không thể nhớ tên của mọi thứ.
Giải pháp: Tại thời điểm này, bạn cần nghĩ về các lớp học của mình trong các nhóm logic và thu thập các nhóm đó thành các tiêu đề khiến bạn không phải #include
lặp đi lặp lại. Điều này không chỉ làm cho cuộc sống đơn giản hơn, nó cũng là một bước cần thiết để tận dụng các tiêu đề được biên dịch trước .
Bạn kết thúc #include
lớp học bạn không cần nhưng ai quan tâm ?
Trong trường hợp này, mã của bạn sẽ trông như ...
#include <Graphics.hpp>
struct Entity {
Texture texture;
RenderObject render();
}