Di C ++, fitur-fitur seperti pengecualian memengaruhi seluruh program Anda: Anda bisa menonaktifkannya di seluruh program Anda , atau Anda perlu mengatasinya di seluruh kode Anda. Seperti artikel terkenal tentang C ++ Report menuliskannya:
Kontra-intuitif, bagian sulit dari pengkodean pengecualian bukanlah lemparan dan tangkapan eksplisit. Bagian yang sangat sulit dari menggunakan pengecualian adalah untuk menulis semua kode intervensi sedemikian rupa sehingga pengecualian sewenang-wenang dapat menyebar dari situs melemparnya ke handlernya, tiba dengan selamat dan tanpa merusak bagian lain dari program di sepanjang jalan.
Karena bahkan new
melempar pengecualian, setiap fungsi harus memberikan keamanan pengecualian dasar - kecuali jika hanya memanggil fungsi yang menjamin melempar pengecualian - kecuali Anda menonaktifkan pengecualian sama sekali di seluruh proyek Anda .
Karenanya, pengecualian adalah fitur "seluruh program" atau "seluruh tim", karena harus dipahami oleh semua orang di tim yang menggunakannya. Tapi tidak semua fitur C ++ seperti itu, sejauh yang saya tahu.
Contoh yang mungkin adalah bahwa jika saya tidak mendapatkan templat tetapi saya tidak menggunakannya, saya masih bisa menulis C ++ yang benar - atau tidak ?. Saya bahkan dapat memanggil sort
array bilangan bulat dan menikmati kecepatan keunggulannya yang luar biasa. C qsort
(karena tidak ada fungsi pointer disebut), tanpa risiko bug - atau tidak? Tampaknya templat tidak "seluruh tim".
Apakah ada fitur C ++ lainnya yang kode dampak tidak langsung menggunakannya, dan karenanya "seluruh tim"? Saya terutama tertarik pada fitur yang tidak ada dalam C.
Pembaruan : Saya terutama mencari fitur di mana tidak ada tanda yang diberlakukan bahasa yang perlu Anda ketahui. Jawaban pertama yang saya sebutkan const benar, yang juga seluruh tim, maka semua orang perlu mempelajarinya; Namun, AFAICS hanya akan memengaruhi Anda jika Anda memanggil fungsi yang ditandai const
, dan kompiler akan mencegah Anda memanggilnya pada objek non-const, sehingga Anda mendapatkan sesuatu untuk google. Dengan pengecualian, Anda bahkan tidak mendapatkannya; Selain itu, mereka selalu digunakan segera setelah Anda gunakan new
, karenanya pengecualian lebih "berbahaya". Karena saya tidak dapat mengatakan ini secara objektif, saya akan menghargai fitur seluruh tim.
Pembaruan 2 : alih-alih fitur C ++ saya seharusnya menulis sesuatu seperti "C ++ - fitur spesifik", untuk mengecualikan hal-hal seperti multithreading yang berlaku untuk sejumlah besar bahasa pemrograman utama.
Lampiran: Mengapa pertanyaan ini objektif (jika Anda bertanya-tanya)
C ++ adalah bahasa yang kompleks, sehingga banyak proyek atau panduan pengkodean mencoba memilih fitur C ++ "sederhana", dan banyak orang mencoba untuk memasukkan atau mengecualikan beberapa yang menurut sebagian besar kriteria subyektif. Pertanyaan tentang hal itu harus ditutup secara teratur di sini di SO.
Di atas, sebagai gantinya, saya mendefinisikan (setepat mungkin) apa fitur bahasa "seluruh tim", memberikan contoh (pengecualian), bersama dengan bukti pendukung yang luas dalam literatur tentang C ++, dan meminta fitur seluruh tim dalam C ++ tanpa pengecualian.
Apakah Anda harus menggunakan fitur "seluruh tim", atau apakah itu konsep yang relevan, mungkin subjektif - tetapi itu hanya berarti pentingnya pertanyaan ini subjektif, seperti biasa.