Etkili C ++ hala etkili midir?


139

Bu yazıda gördüklerimden Etkili C ++ kitabını okumaya karar verdim .

Ama şimdi C ++ 11 nedeniyle birçok yeni özellik var ve iyi uygulamalardan birkaçının değiştiğine göre, aslında iyi bir fikir olup olmadığından emin değilim. C ++ 11'in ortaya çıkışı, Effective C ++ 'da yer alan tavsiyelerin herhangi birini reddetti mi? Öyleyse, hangi konulardan kaçınmalıyım?


4
Yazar scottmeyers.blogspot.co.uk/2013/01/… ve bir makalede bazı yorumlar yaptı , temelde evet, ama dikkate alınması gereken daha çok şey var.
jcoder

2
İçindekilere bir göz atın: pearson.ch/1471/9780321334879/… . Birçok öğe hala geçerlidir, bazıları r-değeri referansları ve diğer yeni şeyler ile geliştirilebilir, ancak genel olarak hala etkili olmalıdır.
Zeta

Bu soru SO için uygun değildir. (1) Sorulan içerik söz konusu değil, site dışı bir kaynakta (ve hatta bağlı değil). (2) Ya kitaptaki her öneriyi ele almak ayrı bir cevaptır, bu durumda bu çok fazla cevap gerektiren bir liste sorusudur ya da tek bir cevap tüm kitabı tartışmalıdır, bu durumda bu soru çok geniştir. Bununla birlikte, herhangi bir tek tavsiye hakkında aynı soruyu sormak harika olurdu.
Ben Voigt

2
(1) SO'daki en popüler sorulardan birinde bahsedilen bir kitaba atıfta bulunuyorum. (2) Bu iyi bir şikayet, ancak hemen hemen her soru ile geniş olabilirsiniz. ya da istediğiniz kadar dar olabilirsiniz. Cevapların SO'daki çoğu sorudan oldukça iyi ve çok daha dar olduğunu düşünüyorum, bu yüzden ayrıntılı bir listenin gerekli olduğunu düşünmüyorum. KAPALI KONU: Tahmin et kimin ile başlayan bir soru var "Herkes aşağıda bağlı std :: string kodu, benim tamsayı performansını yenebilir?"
Alman Capuano

Yanıtlar:


93

Scott Meyers'in kendisinin bu konuda kendi blogunda söylediği şey

Bu da, Etkili C ++ 'ın bu C ++ 0x sürümündeki bilgi ve tavsiyenin alakalı olup olmadığını merak etmenize neden olabilir. Bunu bildirmekten memnuniyet duyuyorum. Şaşırtıcı bir şekilde, aslında. C ++ 0x ayrıntılarında neredeyse iki yıl geçirdikten sonra, bu kitabın içindekiler tablosunu C ++ 0x göz önünde bulundurarak biraz inilti bekledim. Elbette bazı Öğeler uygunsuz olacaktır. Ama bulduğum tavsiye sağlam çıktı. C ++ 0x geliştiricileri consts, enums ve inline tercih etmelidir #defines(Öğe 2)? Yapmalılar. İstisnaların yıkıcıları terk etmesini engellemeli mi (Madde 8)? Kesinlikle. Kaynakları yönetmek için nesneler mi kullanmalılar? Veri üyelerini gizli mi ilan ettiniz? Sanal işlevlere alternatifler düşünülsün mü? Faktör parametresinden bağımsız kod şablonlar dışında mı? (Madde 13, 22, 35 ve 44.) Evet, evet, evet, evet! Amacım her zaman Etkili C ++ 'ın içindekiler kitabındaki önerileri özetlemekti ve bu özet “geleneksel” C ++ gelişimi için olduğu gibi C ++ 0x gelişimi için de geçerlidir. C ++ 0x daha büyük bir dildir ve bazı açılardan farklı bir dildir, ancak “eski” C ++ 'ı etkili kullanmak için temel teknikler de C ++ 0x'in etkili kullanımı için temeldir.

Bu, bu Etkili C ++ 'ın C ++ 0x için mükemmel bir eşleşme olduğu anlamına gelmez. Kitap, C ++ 0x için yeni özellikler hakkında tartışmıyor, bu nedenle bu özelliklerin etkili kullanımına ilişkin öğeler eksik. Bir C ++ 0xified Etkili C ++, işlemleri taşımak, tekdüze başlatma ve lambda ifadelerine adanmış Öğelere sahip olacaktır ve muhtemelen eşzamanlılık API'sını etkili bir şekilde kullanma konusunda tüm bir bölüme sahip olacaktır. Böyle bir kitap, örneğin otomatik değişkenleri kullanan, döngüler için aralık tabanlı, sınıf içi varsayılan başlatıcılar ve ara sıra varyasyon şablonu gibi farklı örnekler de içerir. Bu kitabın C ++ 0x desteğinde yetersiz kaldığı ölçüde, hatalar komisyon değil ihmaldir.

GÜNCELLEME : yeni başlık Effective Modern C ++ , Kasım 2014'ten beri O'Reilly ve Amazon'dan (ve google için yapabileceğiniz diğer pek çok kişiden) satışa sunuldu .


45

Evet, kesinlikle okumaya değer. Bir yoktur : Scott üzerinde çalıştığı yeni kitabı Etkili C ++ 11 11 tek kod C ++ hangi konsantreleri. Etkili C ++ hala çok alakalı olduğunu ve yeni bir kitap yerini değildir. Satın al, oku, tadını çıkar :)


1
Kitapların birbiri üzerine kurulduğunu görüyorum, bu yüzden Effective C ++ hayati bir temeldir. Eğer ikisinden sadece birini okursanız, Etkili C ++ olmalıdır. Etkili Modern C ++ çok daha ezoteriktir (ve dürüst olmak gerekirse C ++ 'ın çoğunluğu zaten' modern 'olmaktan çok uzaktır).
Andy Krouwel

21

Birincisi, kitap elbette C ++ 03 için de geçerlidir.

İki, Meyers bu cümleyi ne zaman okuduğunuza bağlı olarak yazıyor ya da yazdı, Etkili C ++ 11.

Üç, genel olarak konuşursak, bu kitabın noktaları hala geçerli olacaktır. C ++ hala güvenlik üzerinde hızı desteklemektedir ve Effective C ++ 'da birçok sorun bu konuya odaklanmaktadır.

Sadece nazik noktanın geçersiz say olanlardır olmasını beklediğiniz "Bunu yapma yerine bunu." "Bunu yapma" hala geçerli olacak. Ancak C ++ bazı sorunları çözmüş olacak. Özellikle, C + + 11'in Meyers'ın özellikle Artırmak için okuyucuyu ifade ettiği birçok özelliği içerdiği için, boost kullanımı için herhangi bir öneri muhtemelen reddedilmiştir.


1
Ve elbette tr1, bahsettiği her unsurun tr1bunu C ++ 11 standardına dönüştürdüğüne inanıyorum .
Kyle Strand
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.