ใน C ++ คุณสมบัติเช่นข้อยกเว้นส่งผลกระทบต่อโปรแกรมทั้งหมดของคุณ: คุณสามารถปิดการใช้งานพวกเขาในโปรแกรมทั้งหมดของคุณหรือคุณต้องจัดการกับพวกเขาตลอดรหัสของคุณ ในฐานะที่เป็นบทความที่มีชื่อเสียง ในรายงาน C ++ทำให้มัน:
ตอบโต้ส่วนที่ยากของข้อยกเว้นการเข้ารหัสไม่ใช่การขว้างและจับอย่างชัดเจน ส่วนที่ยากมากของการใช้ข้อยกเว้นคือการเขียนรหัสการแทรกแซงทั้งหมดในลักษณะที่ข้อยกเว้นโดยพลการสามารถแพร่กระจายจากไซต์ที่ส่งไปยังผู้จัดการของตนมาถึงอย่างปลอดภัยและไม่ทำให้ส่วนอื่น ๆ ของโปรแกรมเสียหายไปตลอดทาง
เนื่องจากแม้จะมีการnew
ยกเว้นข้อยกเว้นทุกฟังก์ชั่นจะต้องให้ความปลอดภัยข้อยกเว้นขั้นพื้นฐาน - ยกเว้นว่าจะเรียกเฉพาะฟังก์ชั่นที่รับประกันว่าจะไม่มีข้อยกเว้น - เว้นแต่คุณจะปิดการใช้งานข้อยกเว้นทั้งหมดในโครงการทั้งหมดของคุณจนกว่าคุณจะปิดการใช้งานข้อยกเว้นโดยสิ้นเชิงในโครงการทั้งหมดของคุณ
ดังนั้นข้อยกเว้นเป็นคุณลักษณะ "ทั้งโปรแกรม" หรือ "ทั้งทีม" เนื่องจากทุกคนในทีมต้องใช้ความเข้าใจ แต่ไม่ใช่ว่าคุณสมบัติ C ++ ทั้งหมดจะเป็นอย่างนั้นเท่าที่ฉันรู้
ตัวอย่างที่เป็นไปได้คือถ้าฉันไม่ได้รับเท็มเพลต แต่ฉันไม่ได้ใช้มันฉันจะยังสามารถเขียน C ++ ที่ถูกต้องได้หรือไม่? ฉันสามารถโทรsort
หาอาเรย์ของจำนวนเต็มและเพลิดเพลินไปกับความได้เปรียบความเร็วที่น่าทึ่งของมัน C qsort
(เพราะไม่มีตัวชี้ฟังก์ชั่นถูกเรียก) โดยไม่เสี่ยงต่อข้อบกพร่อง - หรือไม่? ดูเหมือนว่าเทมเพลตไม่ใช่ "ทั้งทีม"
มีฟีเจอร์ C ++ อื่น ๆ ที่ส่งผลกระทบต่อรหัสที่ไม่ได้ใช้งานโดยตรงและเป็น "ทั้งทีม" หรือไม่? ฉันสนใจคุณสมบัติพิเศษที่ไม่มีใน C.
ปรับปรุง : ฉันโดยเฉพาะอย่างยิ่งการหาคุณสมบัติที่ไม่มีป้ายภาษาบังคับใช้คุณจะต้องรู้ของพวกเขา คำตอบแรกที่ฉันได้กล่าวถึงความถูกต้อง const ซึ่งเป็นทั้งทีมดังนั้นทุกคนต้องเรียนรู้เกี่ยวกับมัน อย่างไรก็ตาม AFAICS จะส่งผลกระทบต่อคุณเฉพาะเมื่อคุณเรียกใช้ฟังก์ชันที่มีการทำเครื่องหมายconst
และคอมไพเลอร์จะป้องกันไม่ให้คุณเรียกใช้บนวัตถุที่ไม่ใช่ const ดังนั้นคุณจะได้รับสิ่งที่เป็น google ด้วยข้อยกเว้นคุณจะไม่ได้รับสิ่งนั้น ยิ่งกว่านั้นพวกมันจะถูกใช้งานทันทีที่คุณใช้new
ดังนั้นข้อยกเว้นจึงเป็น "ร้ายกาจ" มากกว่า แต่เนื่องจากฉันไม่สามารถพูดสิ่งนี้ได้อย่างเป็นกลาง แต่ฉันจะขอบคุณคุณลักษณะทั้งหมดของทีม
อัปเดต 2 : แทนที่จะใช้คุณสมบัติ C ++ ฉันควรเขียนบางอย่างเช่น "C ++ - คุณสมบัติเฉพาะ" เพื่อแยกสิ่งต่าง ๆ เช่นมัลติเธรดซึ่งใช้กับภาษาการเขียนโปรแกรมหลักจำนวนมาก
ภาคผนวก: ทำไมคำถามนี้มีวัตถุประสงค์ (ถ้าคุณสงสัย)
C ++ เป็นภาษาที่ซับซ้อนโครงการหรือคู่มือการเข้ารหัสจำนวนมากพยายามเลือกคุณสมบัติ C ++ แบบ "ง่าย" และหลาย ๆ คนพยายามที่จะรวมหรือยกเว้นบางอย่างตามเกณฑ์อัตนัยส่วนใหญ่ คำถามเกี่ยวกับการปิดอย่างถูกต้องเป็นประจำที่นี่ใน SO
ข้างต้นแทนฉันกำหนด (อย่างแม่นยำที่สุดเท่าที่จะเป็นไปได้) ว่าคุณลักษณะของภาษา "ทั้งทีม" คืออะไรให้ตัวอย่าง (ข้อยกเว้น) พร้อมหลักฐานสนับสนุนมากมายในวรรณคดีเกี่ยวกับ C ++ และขอคุณลักษณะทั้งทีมใน C ++ เกินข้อยกเว้น
ไม่ว่าคุณควรใช้คุณสมบัติ "ทั้งทีม" หรือว่าเป็นแนวคิดที่เกี่ยวข้องหรือไม่ก็ตาม แต่นั่นก็หมายความว่าความสำคัญของคำถามนี้เป็นเรื่องส่วนตัวเช่นเคย