2016-03-20 11 views
1

Önceki çalışma arkadaşlarımdan biri, satır içi üye işlevi tanımlarıyla yaklaşık 100 tek yapıya sahip büyük bir başlık dosyası yazdı. Bu yapı dosyası çoğu sınıf uygulamalarında (cpp dosyaları) ve başlık dosyalarında yer almaktadır (meslektaşımın neden ileri bildirimleri kullanmadığını bilmiyorum)Bir üstbilgi dosyası içinde tanımlanan birden çok yapı - Ayrı h ve cpp dosyalarında bunları kaldırmalı mıyım?

Bu kadar büyük bir başlık dosyasını okumak sadece bir kabus değil, derleyici nedeniyle problemleri takip etmenin zorluğu şimdi birden fazla tanımdan ve döngüsel referanslardan şikayetçi oldu. Genel derleme süreci de gerçekten yavaş.

Bu gibi birçok sorunu gidermek için, bu başlık dosyasının diğer başlık dosyalarından cpp dosyalarına (mümkün olan her yerde) eklenmesine ve yalnızca ilgili yapıların ileriye dönük beyanlarını kullandım. Yine de "ölümcül hata LNK1169: bir veya daha fazla çarpma tanımlı sembol bulunan" gibi garip çoklu tanımlama hataları almaya devam ediyorum.

Şimdi, bu yapı üstbilgi dosyasını yeniden gözden geçirip değiştirmemeyi ve yapı bildirimini ve tanımlamayı her bir yapı için ayrı h/cpp dosyalarında ayırmamayı düşünmekteyim. Visual Studio'daki araçları yeniden işlemeksizin bunu yapmak acı verici ve zaman alıcı olsa da, bu sorunları çözmek için iyi bir yaklaşım mıdır?

Not: Bu soru aşağıdaki soruya ilişkilidir: Böyle büyük bir üstlenmeden ile karşılaştıklarında, büyük olasılıkla aşağıdaki yaklaşımlardan biri yok edecek Multiple classes in a header file vs. a single header file per class

+0

Tamamen bir fikir sorusu. –

cevap

2

: Toplu olarak refactor veya adım adım bunu.

Toplu olarak yapmanın avantajı, kod boyunca çok hızlı bir şekilde ilerlemenizdir (artımla karşılaştırıldığında), ancak bir hatayla sonuçlanırsanız, sabitlemeden önce çok zaman alabilir.

Bu aşamalı olarak ve sınıfların tek tek bölünmesiyle, zaman alıcı hataların riskini azaltırsınız, ancak biraz zaman alır. majör dahil Ancak tutarak farklı çeviri birimleri

  • içine

    • Bölünmüş kapalı her sınıf, tek-birer (yukarıdan alt):

      Şahsen, 2 yaklaşımları birleştirmek için çalışacağını söyledi dosya ve herkes tarafından sınıflandırılır taşındı değiştirmeyi

    • önemli başlık dosyasını Sonrasında bu büyük başlık dosyasına dahil kaldırabilir ve
    • Son olarak tekil sınıflar tarafından bunların yerine, kaldırmak içerir

    Zaten kendi kendine yeten başlık dosyaları oluşturmak için yararlı bulduğum bir şey, başlıklarınızı önceden derlemektir. Doğru veriyi dahil etmediğinizde bu derleme başarısız olur.

  • İlgili konular