Чи ефективний C ++ все ще ефективний?


139

З того, що я побачив у цій публікації, я вирішив почати читати книгу « Ефективний C ++» .

Але тепер, коли через C ++ 11 з’явилося багато нових функцій і змінилося декілька хороших практик, я не впевнений, чи це насправді хороша ідея. Чи з’явилось поява C ++ 11 будь-якої поради, що міститься в «Ефективній C ++»? Якщо так, яких тем слід уникати?


4
Автор висловив деякі коментарі у статті scottmeyers.blogspot.co.uk/2013/01/… та інших на сайті, в основному так, але є ще що слід розглянути.
jcoder

2
Просто подивіться на зміст: pearson.ch/1471/9780321334879/… . Багато предметів залишаються дійсними, деякі можна вдосконалити за допомогою посилань на значення r та інших нових речей, але в цілому це повинно бути ефективним.
Зета

Це питання погано підходить для SO. (1) Вміст, про який питають, не викликає запитання, він знаходиться на ресурсі поза сайтом (і навіть не пов’язаний). (2) Або адресація кожної рекомендації в книзі - це окрема відповідь, і в цьому випадку це питання зі списком, що вимагає занадто багато відповідей, або ж одна відповідь повинна обговорювати всю книгу, і в цьому випадку це питання занадто широке. З цього приводу, було б чудово задати однакове запитання щодо будь-якої єдиної рекомендації
Бен Войгт

2
(1) Я посилаюся на книгу, згадану в одному з найпопулярніших запитань SO. (2) Це нормально скарга, але ви можете бути широкими з майже будь-яким питанням. або ви можете бути настільки вузькими, як вам заманеться. Я вважаю, що відповіді були досить хорошими і набагато вужчими, ніж більшість питань в ТА, тому я не думаю, що детальний перелік необхідний. ВИМКНЕНА ТЕМА: здогадайтеся, у кого виникає питання, яке починається з "Чи може хтось перемогти виконання мого цілого числа std :: string code, зв'язаний нижче?"
німецький Капуано

Відповіді:


93

Про це сказав сам Скотт Майєрс у своєму блозі

Що може змусити вас замислитись, чи залишається інформація та поради в цьому випуску «Ефективний C ++» до попереднього C ++ 0x. Я радий повідомити, що це так. Дивно, але насправді. Провівши майже два роки, пронизані деталями C ++ 0x, я очікував трохи застогнати, переглядаючи зміст цієї книги, маючи на увазі C ++ 0x. Звичайно, деякі пункти були б недоречними. Але поради, які я знайшов, виявилися здоровими. Якщо розробники C ++ 0x віддають перевагу consts, enums та inlines до #defines(Пункт 2)? Вони повинні. Чи повинні вони перешкоджати виняткам залишати деструктори (пункт 8)? Звичайно. Чи повинні вони використовувати об’єкти для управління ресурсами? Оголосити членів даних приватними? Розглянемо альтернативи віртуальним функціям? Незалежний від параметрів код від шаблонів? (Пункти 13, 22, 35 та 44.) Так, так, так, так! Моя мета завжди полягала в тому, щоб у змісті «Ефективного C ++» було узагальнено поради в книзі, і це резюме залишається так само застосовно до розробки C ++ 0x, як і для «традиційного» розвитку C ++. C ++ 0x - це більш широка мова, і в чомусь це інша, але основні методи ефективного використання "старого" C ++ є основними і для ефективного використання C ++ 0x.

Це не означає, що цей ефективний C ++ є ідеальним для C ++ 0x. У книзі не обговорюються функції, які є новими для C ++ 0x, тому пункти про ефективне використання цих функцій відсутні. C ++ 0xified Effective C ++, безумовно, матиме елементи, присвячені переміщенню операцій, рівномірній ініціалізації та виразам лямбда, і, ймовірно, буде ціла глава щодо ефективного використання API паралельності. Така книга також міститиме різні приклади, наприклад, такі, що використовують автоматичні змінні, на основі діапазону для циклів, ініціалізатори за замовчуванням у класі, а також випадковий варіативний шаблон. Оскільки ця книга не підтримує C ++ 0x, помилки є помилками, а не комісією.

ОНОВЛЕННЯ : новий заголовок Effective Modern C ++ продається з листопада 2014 року від O'Reilly та Amazon (та багатьох інших, на які можна працювати в Google).


45

Так, безумовно, все-таки варто прочитати. Існує нова книга, над якою працює Скотт: Ефективний C ++ 11 , яка зосереджена лише на коді C ++ 11. Ефективне використання C ++ по - , як і раніше дуже актуальна, і не витісняється нової книги. Купуйте, читайте, насолоджуйтесь :)


1
Я бачу, як книги будуються одна на одну, тому ефективний C ++ є життєво важливою основою. Якщо ви читаєте лише одне з двох, це повинно бути Ефективним C ++. Ефективний сучасний C ++ набагато езотеричніший (і якщо чесно сказати, то більшість C ++ далеко не «сучасні»).
Енді Крувель

21

По-перше, книга як і раніше дійсна для C ++ 03.

По-друге, Меєрс пише або пише, залежно від того, коли ви читаєте це речення, Ефективно C ++ 11.

Три, якщо говорити в цілому, пункти цієї книги все ще будуть дійсними. C ++ як і раніше надає перевагу швидкості над безпекою, і багато питань в Ефективній C ++ обертаються навколо цього.

Тільки вигляд пункту я б очікувати , щоб бути недійсними є ті , які кажуть : «Не роби цього, це зробити замість цього.» "Не робіть цього" все одно буде дійсним. Але C ++ вирішить деякі проблеми. Зокрема, будь-які рекомендації щодо використання boost, ймовірно, застаріли, оскільки C ++ 11 включає багато функцій, з якими Майєр спеціально посилає читача на Boost.


1
І звичайно tr1, оскільки я вважаю, що кожен з tr1згаданих ним елементів перетворився на стандарт C ++ 11.
Кайл Странд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.