Niyə başlıq faylında kod yazmırıq?
sobes.tech Süni İntellekt
AI-dan cavab
Başlıq fayllarında (.h və ya .hpp C++-də) kod yerləşdirilməməlidir və bunun səbəbləri aşağıdakılardır:
-
Bir Təyin Etmə Qaydasının (One Definition Rule - ODR) pozulması. Bir neçə
.cppfaylı başlıq faylını daxil etdikdə, içindəki icra edilə bilən kod bir neçə dəfə təyin olunacaq və bu, əlaqələndirmə xətasına (multiple definition) səbəb olacaq. İstisna,inlinefunksiyalar və sinif/funksiyalar şablonlarıdır; bunlar hər tərcümə modulunda təyin olunmalıdır.// nümunə.h int g_counter = 0; // Qlobal dəyişən - ODR pozuntusu void my_function() { // Funksiya - ODR pozuntusu // kod } inline void my_inline_function() { // inline funksiya - istisna // kod } template<typename T> void process(T value) { // şablon funksiya - istisna // kod } -
Tərcümə vaxtının artması. Hər dəfə başlıq faylı daxil edildikdə, kompilyator onu yenidən emal edir. Kodun başlıq fayllarına yerləşdirilməsi, kompilyator üçün yükü artırır və layihənin qurulma prosesini yavaşladır, xüsusən böyük layihələrdə.
-
Dəstək və testlərin mürəkkəbliyi. Başlıq fayllarında yayılmış kod daha az modul olur. Bu, tək-tək komponentlərin test edilməsini və müstəqil dəyişdirilməsini çətinləşdirir.
-
Daxil etmə döngüsü (include loops) riskləri. Yanlış təşkil olunmuş daxil etmələr, başlıq fayllarında kod ilə, döngüsel asılılıqlara və tərtib problemlərinə səbəb ola bilər.
Başlıq fayllarında ümumiyyətlə aşağıdakılar elan edilir:
- Siniflər (təriflər, amma metodların tətbiqləri deyil)
- Funksiyalar (prototiplər)
- Qlobal dəyişənlər (
externistifadə edilərək) - Daimilər
- Sinif və funksiyalar şablonları (tam təriflər)
inlinefunksiyalar (tam təriflər)- Məlumat tipləri (
struct,enum,typedef,using) - Ad məkanları (
namespace)
Kodun tətbiqi (funksiya bədənləri, statik üzvlərin və qlobal dəyişənlərin tərifləri) müvafiq tətbiq fayllarına (.cpp) yerləşdirilir.