Praktik yang baik adalah jangan khawatir tentang strategi header Anda selama dikompilasi.
Bagian tajuk dari kode Anda hanyalah satu blok garis yang tak seorang pun harus melihatnya sampai Anda mendapatkan kesalahan kompilasi yang mudah diselesaikan. Saya mengerti keinginan untuk gaya yang 'benar', tetapi tidak ada cara yang dapat benar-benar digambarkan sebagai benar. Memasukkan header untuk setiap kelas lebih cenderung menyebabkan kesalahan kompilasi berbasis pesanan yang mengganggu, tetapi kesalahan kompilasi tersebut juga mencerminkan masalah yang dapat diperbaiki oleh pengkodean yang hati-hati (meskipun mereka tidak sepadan dengan waktu untuk memperbaikinya).
Dan ya, Anda akan memiliki masalah berbasis pesanan setelah mulai masuk ke friend
daratan.
Anda dapat memikirkan masalahnya dalam dua kasus.
Kasus 1: Anda memiliki sejumlah kecil kelas yang saling berinteraksi, katakanlah kurang dari selusin. Anda secara teratur menambah, menghapus dari, dan memodifikasi tajuk ini, dengan cara yang dapat memengaruhi ketergantungan mereka satu sama lain. Ini adalah kasus yang disarankan oleh contoh kode Anda.
Kumpulan tajuk cukup kecil sehingga tidak rumit untuk menyelesaikan masalah apa pun yang muncul. Setiap masalah sulit diperbaiki dengan menulis ulang satu atau dua header. Khawatir tentang strategi tajuk Anda adalah menyelesaikan masalah yang tidak ada.
Kasus 2: Anda memiliki banyak kelas. Beberapa kelas mewakili tulang punggung program Anda, dan menulis ulang tajuknya akan memaksa Anda untuk menulis ulang / mengkompilasi ulang sejumlah besar basis kode Anda. Kelas-kelas lain menggunakan tulang punggung ini untuk menyelesaikan banyak hal. Ini mewakili pengaturan bisnis yang khas. Header tersebar di seluruh direktori dan Anda tidak dapat secara realistis mengingat nama-nama segalanya.
Solusi: Pada titik ini, Anda perlu memikirkan kelas Anda dalam kelompok logis dan mengumpulkan kelompok-kelompok itu menjadi header yang menghentikan Anda dari keharusan untuk #include
berulang-ulang. Ini tidak hanya membuat hidup lebih sederhana, itu juga merupakan langkah yang diperlukan untuk mengambil keuntungan dari header yang telah dikompilasi .
Anda berakhir di #include
kelas yang tidak Anda butuhkan tetapi siapa yang peduli ?
Dalam hal ini, kode Anda akan terlihat seperti ...
#include <Graphics.hpp>
struct Entity {
Texture texture;
RenderObject render();
}