[ Главная ] [ Гостевая ]

Эффективное использование C++.
55 верных способов улучшить структуру и код ваших программ.

Скотт Майерс

Перевод:
Н. А. Мухин

Оглавление

  • Благодарности
  • Предисловие
  • Введение
  •   Терминология
  •   Соглашения об именах
  •   Многопоточность
  •   Библиотеки TR1 и Boost
  • Глава 1 Приучайтесь к C++
  •   Правило 1: Относитесь к C++ как к конгломерату языков
  •   Правило 2: Предпочитайте const, enum и inline использованию #define
  •   Правило 3: Везде, где только можно используйте const
  •     Константные функции-члены
  •     Как избежать дублирования в константных и неконстантных функциях-членах
  •   Правило 4: Прежде чем использовать объекты, убедитесь, что они инициализированы
  • Глава 2 Конструкторы, деструкторы и операторы присваивания
  •   Правило 5: Какие функции C++ создает и вызывает молча
  •   Правило 6: Явно запрещайте компилятору генерировать функции, которые вам не нужны
  •   Правило 7: Объявляйте деструкторы виртуальными в полиморфном базовом классе
  •   Правило 8: Не позволяйте исключениям покидать деструкторы
  •   Правило 9: Никогда не вызывайте виртуальные функции в конструкторе или деструкторе
  •   Правило 10: Операторы присваивания должны возвращать ссылку на *this
  •   Правило 11: В operator= осуществляйте проверку на присваивание самому себе
  •   Правило 12: Копируйте все части объекта
  • Глава 3 Управление ресурсами
  •   Правило 13: Используйте объекты для управления ресурсами
  •   Правило 14: Тщательно продумывайте поведение при копировании классов, управляющих ресурсами
  •   Правило 15: Предоставляйте доступ к самим ресурсам из управляющих ими классов
  •   Правило 16: Используйте одинаковые формы new и delete
  •   Правило 17: Помещение в «интеллектуальный» указатель объекта, вьщеленного с помощью new, лучше располагать в отдельном предложении
  • Глава 4 Проектирование программ и объявления
  •   Правило 18: Проектируйте интерфейсы так, что их легко было использовать правильно и трудно – неправильно
  •   Правило 19: Рассматривайте проектирование класса как проектирование типа
  •   Правило 20: Предпочитайте передачу по ссылке на const передаче по значению
  •   Правило 21: Не пытайтесь вернуть ссылку, когда должны вернуть объект
  •   Правило 22: Объявляйте данные-члены закрытыми
  •   Правило 23: Предпочитайте функциям-членам функции, не являющиеся ни членами, ни друзьями класса
  •   Правило 24: Объявляйте функции, не являющиеся членами, когда преобразование типов должно быть применимо ко всем параметрам
  •   Правило 25: Подумайте о поддержке функции swap, не возбуждающей исключений
  • Глава 5 Реализация
  •   Правило 26: Откладывайте определение переменных насколько возможно
  •   Правило 27: Не злоупотребляйте приведением типов
  •   Правило 28: Избегайте возвращения «дескрипторов» внутренних данных
  •   Правило 29: Стремитесь, чтобы программа была безопасна относительно исключений
  •   Правило 30: Тщательно обдумывайте использование встроенных функций
  •   Правило 31: Уменьшайте зависимости файлов при компиляции
  • Глава 6 Наследование и объектно-ориентированное проектирование
  •   Правило 32: Используйте открытое наследование для моделирования отношения «является»
  •   Правило 33: Не скрывайте унаследованные имена
  •   Правило 34: Различайте наследование интерфейса и наследование реализации
  •   Правило 35: Рассмотрите альтернативы виртуальным функциям
  •     Реализация паттерна««Шаблонный метод» с помощью идиомы невиртуального интерфейса
  •     Реализация паттерна «Стратегия» посредством указателей на функции
  •     Реализация паттерна «Стратегия» посредством класса tr::function
  •     «Классический» паттерн «Стратегия»
  •     Резюме
  •   Правило 36: Никогда не переопределяйте наследуемые невиртуальные функции
  •   Правило 37: Никогда не переопределяйте наследуемое значение аргумента функции по умолчанию
  •   Правило 38: Моделируйте отношение «содержит» или «реализуется посредством» с помощью композиции
  •   Правило 39: Продумывайте подход к использованию закрытого наследования
  •   Правило 40: Продумывайте подход к использованию множественного наследования
  • Глава 7 Шаблоны и обобщенное программирование
  •   Правило 41: Разберитесь в том, что такое неявные интерфейсы и полиморфизм на этапе компиляции
  •   Правило 42: Усвойте оба значения ключевого слова typename
  •   Правило 43: Необходимо знать, как обращаться к именам в шаблонных базовых классах
  •   Правило 44: Размещайте независимый от параметров код вне шаблонов
  •   Правило 45: Разрабатывайте шаблоны функций-членов так, чтобы они принимали «все совместимые типы»
  •   Правило 46: Определяйте внутри шаблонов функции, не являющиеся членами, когда желательны преобразования типа
  •   Правило 47: Используйте классы-характеристики для предоставления информации о типах
  •   Правило 48: Изучите метапрограммирование шаблонов
  • Глава 8 Настройка new и delete
  •   Правило 49: Разберитесь в поведении обработчика new
  •   Правило 50: Когда имеет смысл заменять new и delete
  •   Правило 51: Придерживайтесь принятых соглашений при написании new и delete
  •   Правило 52: Если вы написали оператор new с размещением, напишите и соответствующий оператор delete
  • Глава 9 Разное
  •   Правило 53: Обращайте внимание на предупреждения компилятора
  •   Правило 54: Ознакомьтесь со стандартной библиотекой, включая TR1
  •   Правило 55: Познакомьтесь с Boost
  • Приложение А За пределами «Эффективного использования C++»
  • Приложение В Соответствие правил во втором и третьем изданиях
    Отзывы о третьей редакции
    Эффективного использования C++

    Книга Скотта Мейерса «Эффективное использование C++», третья редакция – это концентрация опыта программирования – того опыта, который без нее достался бы вам дорогой ценой. Эта книга – великолепный источник, который я рекомендую всем, кто пишет на C++ профессионально.

    Питер Дулимов, ME, инженер, подразделение оценки и исследований NAVSYSCOM, Австралия

    Третья редакция остается лучшей книгой, посвященной тому, как сложить вместе все части C++ для создания эффективных и внутренне целостных программ. Если вы претендуете на то, чтобы быть программистом C++, то должны ее прочитать.

    Эрик Наглер, консультант, преподаватель и автор «Изучая C++»

    Первая редакция этой книги была одной из небольшого (весьма небольшого) числа книг, благодаря которым я ощутимо повысил свой уровень как профессионального разработчика программного обеспечения. Как и другие книги из этого ряда, она оказалась практичной и легкой для чтения, но при этом содержала множество важных советов. «Эффективное использование C++», третья редакция, продолжает эту традицию. C++ – очень мощный язык программирования. Если C дает веревку, по которой можно забраться на вершину горы, то C++ – это целый магазин, в котором самые разные люди готовы помочь вам завязать на этой веревке узлы. Овладение материалом, приведенным в этой книге, определенно повысит вашу способность эффективно использовать C++ и не умереть при этом от напряжения.

    Джек В. Ривес, исполнительный директор Bleading Edge Software Technologies

    Каждый новый разработчик, который приходит в мою команду, сразу получает задание – прочесть эту книгу.

    Майкл Ланцетта, ведущий инженер по программному обеспечению

    Я прочитал первую редакцию «Эффективного использования C++» около 9 лет назад, и эта книга сразу стала одной из моих любимых книг по C++. На мой взгляд, третье издание «Эффективного использования C++» остается обязательным к прочтению для всех, кто желает эффективно программировать на C++. Мы будем жить в лучшем мире, если программисты C++ прочтут эту книгу прежде, чем написать первую строку профессионального кода.

    Дэнни Раббани, инженер по программному обеспечению

    Первое издание «Эффективного использования C++» Скотта Мейерса попалось мне, когда я был рядовым программистом и напряженно старался как можно лучше выполнить порученную работу. И это было спасением! Я обнаружил, что советы Мейерса практически полезны и эффективны, что они на 100 % реализуют то, что обещают. Третья редакция помогает в практическом применении C++ при работе над современными серьезными программными проектами, предоставляя информацию о самых новых средствах и возможностях языка. Я с удовольствием обнаружил, что могу найти много нового и интересного для себя в третьем издании книги, которую, как мне казалось, знаю очень хорошо.

    Майкл Топик, технический программный менеджер

    Это авторитетное руководство от Скотта Мейерса, гуру C++, предназначенное для каждого, кто хочет применять C++ безопасно и эффективно, или же переходит к C++ от любого другого объектно-ориентированного языка. Эта книга содержит ценную информацию, изложенную в ясном, сжатом, занимательном и проницательном стиле.

    Сиддхартха Каран Сингх, разработчик программного обеспечения

    [ Главная ] [ Гостевая ]


    Топ Разработка игр