Apakah C ++ efektif masih efektif?

139

Dari apa yang saya lihat di posting ini saya memutuskan untuk mulai membaca buku Efektif C ++ .

Tapi sekarang ada banyak fitur baru karena C ++ 11 dan beberapa praktik yang baik berubah, saya tidak yakin apakah itu sebenarnya ide yang baik atau tidak. Apakah munculnya C ++ 11 telah menghentikan saran yang terkandung dalam C ++ Efektif? Jika ya, topik apa yang harus saya hindari?

Capuano Jerman
sumber
4
Penulis membuat beberapa komentar dalam artikel scottmeyers.blogspot.co.uk/2013/01/... dan lainnya di situs, pada dasarnya ya, tetapi ada lebih banyak untuk dipertimbangkan.
jcoder
2
Lihat saja daftar isi: pearson.ch/1471/9780321334879/… . Banyak item yang masih valid, beberapa dapat diperbaiki dengan r-value referensi dan hal-hal baru lainnya, tetapi secara keseluruhan harus tetap efektif.
Zeta
Pertanyaan ini TIDAK cocok untuk SO. (1) Konten yang ditanyakan tidak ada dalam pertanyaan, kontennya ada di luar situs (dan bahkan tidak ditautkan). (2) Entah menyapa setiap rekomendasi dalam buku ini adalah jawaban yang terpisah, dalam hal ini ini adalah daftar pertanyaan, membutuhkan terlalu banyak jawaban, atau jika tidak satu jawaban harus membahas seluruh buku, dalam hal ini pertanyaan ini terlalu luas. Yang mengatakan, mengajukan pertanyaan yang identik tentang rekomendasi tunggal akan bagus.
Ben Voigt
2
(1) Saya membuat referensi ke buku yang disebutkan dalam salah satu pertanyaan paling populer di SO. (2) Itu keluhan ok, tetapi Anda bisa luas dengan hampir semua pertanyaan. atau Anda bisa sesempit yang Anda inginkan. Saya pikir jawabannya cukup baik dan jauh lebih sempit daripada kebanyakan pertanyaan di SO, jadi saya tidak berpikir daftar yang terperinci diperlukan. OFF TOPIK: tebak siapa yang memiliki pertanyaan yang dimulai dengan "Adakah yang bisa mengalahkan kinerja integer saya ke std :: string code, yang ditautkan di bawah ini?"
Capuano Jerman

Jawaban:

93

Inilah yang dikatakan Scott Meyers sendiri tentang hal itu di blognya sendiri

Yang mungkin membuat Anda bertanya-tanya apakah informasi dan saran dalam edisi efektif C ++ 0-pre C ini tetap relevan. Saya senang melaporkannya. Anehnya, sebenarnya. Setelah menghabiskan hampir dua tahun mendalami detail C ++ 0x, saya berharap untuk sedikit mengeluh ketika saya meninjau daftar isi buku ini dengan mempertimbangkan C ++ 0x. Tentunya beberapa Item tidak pantas. Tetapi saran yang saya temukan terbukti masuk akal. Seharusnya pengembang C ++ 0x lebih suka const, enum, dan inline #defines(Butir 2)? Mereka harus. Haruskah mereka mencegah pengecualian meninggalkan destruktor (Butir 8)? Pasti. Haruskah mereka menggunakan objek untuk mengelola sumber daya? Menyatakan anggota data pribadi? Pertimbangkan alternatif untuk fungsi virtual? Parameter-parameter kode independen dari template? (Item 13, 22, 35, dan 44.) Ya, ya, ya, ya! Tujuan saya selalu untuk daftar isi C ++ yang Efektif untuk merangkum saran dalam buku ini, dan ringkasan itu tetap berlaku untuk pengembangan C ++ 0x untuk pengembangan C ++ “tradisional”. C ++ 0x adalah bahasa yang lebih besar, dan dalam beberapa hal itu adalah bahasa yang berbeda, tetapi teknik inti untuk membuat penggunaan yang efektif dari C ++ lama adalah inti untuk penggunaan C ++ 0x yang efektif juga.

Ini tidak berarti bahwa C ++ yang Efektif ini sangat cocok untuk C ++ 0x. Buku ini tidak membahas fitur-fitur baru C ++ 0x, sehingga Item tentang memanfaatkan fitur-fitur tersebut secara efektif tidak ada. C ++ 0xified C ++ Efektif tentu akan memiliki Item yang dikhususkan untuk memindahkan operasi, untuk inisialisasi seragam, dan untuk ekspresi lambda, dan itu mungkin memiliki seluruh bab tentang cara menggunakan API konkurensi secara efektif. Buku seperti itu juga akan berisi contoh-contoh yang berbeda, misalnya yang memanfaatkan variabel otomatis, rentang berbasis untuk loop, inisialisasi default di kelas, serta sesekali templat variadik. Sejauh buku ini gagal mendukung C ++ 0x, kesalahannya adalah kelalaian, bukan komisi.

UPDATE : judul baru Effective Modern C ++ telah dijual sejak November 2014 dari O'Reilly dan Amazon (dan banyak lainnya yang bisa Anda cari di google).

TemplateRex
sumber
45

Ya, pasti masih layak dibaca. Ada buku baru yang sedang dikerjakan Scott: Efektif C ++ 11 , yang berkonsentrasi hanya pada kode C ++ 11. The Efektif C ++ masih sangat relevan, dan tidak digantikan oleh buku baru. Beli, baca, nikmati :)

cdmh
sumber
1
Saya melihat buku-buku saling membangun, jadi Efektif C ++ adalah fondasi penting. Jika Anda hanya membaca salah satu dari keduanya, itu harus Efektif C ++. C ++ Modern yang efektif jauh lebih esoteris (dan sejujurnya mayoritas C ++ masih jauh dari 'modern').
Andy Krouwel
21

Satu, buku itu tentu saja masih berlaku untuk C ++ 03.

Dua, Meyers menulis atau telah menulis, tergantung pada saat Anda membaca kalimat ini, Efektif C ++ 11.

Tiga, secara umum, poin-poin dari buku ini akan tetap valid. C ++ masih mendukung kecepatan daripada keamanan, dan banyak masalah dalam C ++ Efektif berputar di sekitar ini.

Satu- satunya hal yang saya harapkan tidak valid adalah yang mengatakan "Jangan lakukan ini, lakukan ini." "Dont 'do this" masih akan valid. Tetapi C ++ akan memecahkan beberapa masalah. Secara khusus, setiap rekomendasi untuk menggunakan dorongan kemungkinan sudah tidak digunakan lagi, karena C ++ 11 telah memasukkan banyak fitur yang secara khusus merujuk Meyers kepada pembaca untuk Ditingkatkan.

Djechlin
sumber
1
Dan tentu saja tr1, karena saya percaya setiap elemen yang tr1disebutkannya membuatnya menjadi standar C ++ 11.
Kyle Strand