ผู้ร่วมงานของคุณผิดวิธีที่พบบ่อยคือการใส่รหัสในไฟล์. cpp (หรือนามสกุลที่คุณต้องการ) และการประกาศในส่วนหัว
ในบางครั้งมีการทำบุญเพื่อวางโค้ดไว้ในส่วนหัวซึ่งจะทำให้การคอมไพเลอร์ฉลาดขึ้น แต่ในเวลาเดียวกันมันสามารถทำลายเวลาการคอมไพล์ของคุณได้เนื่องจากโค้ดทั้งหมดจะต้องถูกประมวลผลทุกครั้งที่คอมไพเลอร์รวมอยู่ด้วย
ในที่สุดมันก็มักจะน่ารำคาญที่มีความสัมพันธ์วัตถุวงกลม (บางครั้งต้องการ) เมื่อรหัสทั้งหมดเป็นส่วนหัว
บรรทัดล่างคุณพูดถูกเขาผิด
แก้ไข:ฉันคิดถึงคำถามของคุณ มีกรณีหนึ่งที่สิ่งที่เขาพูดนั้นเป็นความจริง แม่แบบ ไลบรารี "ทันสมัย" ใหม่จำนวนมากเช่นการเพิ่มใช้ประโยชน์จากเทมเพลตจำนวนมากและมักจะเป็น "ส่วนหัวเท่านั้น" อย่างไรก็ตามสิ่งนี้ควรทำเมื่อจัดการกับเทมเพลตเนื่องจากเป็นวิธีเดียวที่ทำได้เมื่อจัดการกับเทมเพลต
แก้ไข:บางคนต้องการชี้แจงเพิ่มเติมเล็กน้อยต่อไปนี้เป็นความคิดบางอย่างเกี่ยวกับข้อเสียในการเขียนรหัส "ส่วนหัวเท่านั้น":
หากคุณค้นหารอบ ๆ คุณจะเห็นผู้คนจำนวนมากพยายามหาวิธีลดเวลารวบรวมเมื่อจัดการกับการเพิ่มประสิทธิภาพ ตัวอย่างเช่น: วิธีลดเวลาในการรวบรวมด้วย Boost Asioซึ่งจะเห็นการรวบรวม 14 วินาทีของไฟล์ 1K ไฟล์เดียวที่มีการรวมไว้ด้วย ดูเหมือนว่ายุค 14 อาจจะไม่ใช่ "การระเบิด" แต่แน่นอนว่ามันนานกว่าปกติและสามารถรวมกันได้อย่างรวดเร็ว เมื่อต้องรับมือกับโครงการขนาดใหญ่ ส่วนหัวของไลบรารีเท่านั้นที่มีผลต่อเวลาในการรวบรวมในลักษณะที่วัดได้ค่อนข้าง เราเพียงแค่ทนเพราะการเพิ่มประสิทธิภาพนั้นมีประโยชน์มาก
นอกจากนี้ยังมีหลายสิ่งที่ไม่สามารถทำได้ในส่วนหัวเท่านั้น (แม้บูสต์จะมีไลบรารีที่คุณต้องการเชื่อมโยงไปยังบางส่วนเช่นเธรดระบบไฟล์ ฯลฯ ) ตัวอย่างหลักคือคุณไม่สามารถมีวัตถุโกลบอลอย่างง่ายในส่วนหัวเท่านั้น libs (เว้นแต่คุณจะหันไปใช้สิ่งที่น่ารังเกียจที่เป็นซิงเกิลตัน) เนื่องจากคุณจะพบข้อผิดพลาดหลาย ๆ ข้อกำหนด หมายเหตุ:ตัวแปรอินไลน์ของ C ++ 17 จะทำให้ตัวอย่างนี้เป็นไปได้ในอนาคต
เป็นจุดสุดท้ายเมื่อใช้เพิ่มเป็นตัวอย่างของรหัสส่วนหัวเท่านั้นรายละเอียดมากมักจะพลาด
Boost เป็นไลบรารีไม่ใช่รหัสระดับผู้ใช้ ดังนั้นจึงไม่เปลี่ยนแปลงบ่อย ในรหัสผู้ใช้หากคุณใส่ทุกอย่างไว้ในส่วนหัวการเปลี่ยนแปลงเล็กน้อยทุกครั้งจะทำให้คุณต้องคอมไพล์โครงการใหม่ทั้งหมด เป็นการเสียเวลาอย่างมาก (และไม่ใช่กรณีของห้องสมุดที่ไม่ได้เปลี่ยนจากการคอมไพล์เป็นการคอมไพล์) เมื่อคุณแบ่งสิ่งต่าง ๆ ระหว่างส่วนหัว / แหล่งที่มาและดีกว่าให้ใช้การประกาศไปข้างหน้าเพื่อลดการรวมคุณสามารถประหยัดเวลาในการรวบรวมซ้ำเมื่อรวมเข้าด้วยกันในแต่ละวัน