В программе лояльности
На товар применяется персональная скидка, промокоды, купоны и сертификаты

Красивый C++. 30 главных правил чистого, безопасного и быстрого кода

Грегори Кейт, Дэвидсон Дж. Гай

Код товара: 4949776
(0 оценок)Оценить
ОтзывНаписать отзыв
ВопросЗадать вопрос
1 / 22
PDF
Нет в наличии
Доставим в
г. Москва
Курьером
Л-Пост
бесплатно от 3 500 ₽
В пункт выдачи
от 77 ₽
бесплатно от 2 000 ₽
Точная стоимость доставки рассчитывается при оформлении заказа
Издательство:
Оригинальное название:
Beautiful C++. 30 Core Guidelines for Writing Clean, Safe, and Fast Code
Год издания:
2023 г.
Может быть отгружен товар указанного или более позднего года
Переводчик:

Описание

Характеристики

Написание качественного кода на C++ не должно быть трудной задачей. Если разработчик будет следовать рекомендациям, приведенным в C++ Core Guidelines, то он будет писать исключительно надежные, эффективные и прекрасно работающие программы на C++. Но руководство настолько переполнено советами, что порой трудно понять, с чего начать. Начните с "Красивого C++"!
Опытные программисты Гай Дэвидсон и Кейт Грегори выбрали 30 основных рекомендаций, которые посчитали особенно ценными, и дают подробные практические советы, которые помогут улучшить ваш стиль разработки на C++. Для удобства книга структурирована в точном соответствии с официальным веб-сайтом C++ Core Guidelines.
количество томов
1
количество страниц
368 стр.
переплет
Мягкая обложка
размеры
235x165x20 мм
тип бумаги
офсетная (60-220 г/м2)
ISBN
978-5-4461-2272-1
возрастная категория
16+
вес
код в Майшоп
4949776
язык
русский

Содержание

Избранные рекомендации по C++
Предисловие
Вступление
О книге
Код примеров
Благодарности
Об авторах
От издательства
ЧАСТЬ I
BIKESHEDDING - ЭТО ПЛОХО
Глава 1.1. P.2. Придерживайтесь стандарта ISO C
++
Что такое стандарт ISO C++
История С++
Инкапсуляция вариаций
Вариации в окружении времени выполнения
Вариации на уровне языка C++ и компилятора
Расширения для С++
Защита заголовочных файлов
Вариации в основных типах
Нормативные ограничения
Изучение старых способов
Обратная совместимость в C++
Прямая совместимость и Y2K
Следите за последними изменениями в стандарте
IsoCpp
Конференции
Другие источники
Глава 1.2. F.51. Если есть выбор,
используйте аргументы по умолчанию
вместо перегрузки
Введение
Доработка ваших абстракций: дополнительные
аргументы или перегрузка?
Тонкости разрешения перегрузки
Вернемся к примеру
Однозначная природа аргументов по умолчанию
Альтернативы перегрузке
Иногда без перегрузки не обойтись
Подведем итог
Глава 1.3. C.45. Не определяйте конструктор по
умолчанию, который просто инициализирует
переменные-члены; для этой цели лучше
использовать внутриклассовые инициализаторы
членов
Зачем нужны конструкторы по умолчанию
Как инициализируются переменные-члены
Что может случиться, если поддерживать класс
будут два человека
Сборная солянка из конструкторов
Аргументы по умолчанию могут запутать ситуацию
в перегруженных функциях
Подведем итог
Глава 1.4. C.131. Избегайте тривиальных геттеров
и сеттеров
Архаичная идиома
Абстракции
Простая инкапсуляция
Инварианты класса
Существительные и глаголы
Подведем итог
Глава 1.5. ES.10. Объявляйте имена по
одному в каждом объявлении
Позвольте представить
Обратная совместимость
Пишите более ясные объявления
Структурное связывание
Подведем итог
Глава 1.6. NR.2. Функции не обязательно
должны иметь только один оператор возврата
Правила меняются
Гарантия очистки
Идиома RAII
Пишите хорошие функции
Подведем итог
ЧАСТЬ II
НЕ НАВРЕДИТЕ СЕБЕ
Глава 2.1. P.11. Инкапсулируйте беспорядочные
конструкции, а не разбрасывайте их по всему коду
Все одним глотком
Что означает инкапсулировать запутанную
конструкцию
Назначение языка и природа абстракции
Уровни абстракции
Абстракция путем рефакторинга и проведения
линии
Подведем итог
Глава 2.2. I.23. Минимизируйте число
параметров в функциях
Сколько они должны получать?
Упрощение через абстрагирование
Делайте так мало, как возможно, но не меньше
Примеры из реальной жизни
Подведем итог
Глава 2.3. I.26. Если нужен кросс-
компилируемый ABI, используйте подмножество в
стиле C
Создавайте библиотеки
Что такое ABI
Сокращайте до абсолютного минимума
Распространение исключений
Подведем итог
Глава 2.4. C.47. Определяйте и инициализируйте
переменные-члены в порядке их объявления
Подведем итог
Глава 2.5. CP.3. Сведите к минимуму явное
совместное использование записываемых данных
Традиционная модель выполнения
Подождите, это еще не все
Предотвращение взаимоблокировок и гонок за
данными
Отказ от блокировок и мьютексов
Подведем итог
Глава 2.6. Т.120. Используйте
метапрограммирование шаблонов,
только когда это действительно необходимо
std::enable_if => requires
Подведем итог
ЧАСТЬ III
ПРЕКРАТИТЕ ЭТО ИСПОЛЬЗОВАТЬ
Глава 3.1. I.11. Никогда не передавайте
владение через простой
указатель (T*) или ссылку (T&)
Использование области свободной памяти
Производительность интеллектуальных
указателей
Использование простой семантики ссылок
gsl::owner
Подведем итог
Глава 3.2. I.3. Избегайте синглтонов
Глобальные объекты - это плохо
Шаблон проектирования "Синглтон"
Фиаско порядка статической инициализации
Как скрыть синглтон
Только один из них должен существовать в
каждый момент работы кода
Подождите минутку.
Подведем итог
Глава 3.3. C.90. Полагайтесь на конструкторы и
операторы присваивани вместо memset и memcpy
В погоне за максимальной производительностью
Ужасные накладные расходы конструкторов
Самый простой класс
О чем говорит стандарт
А как же memcpy?
Никогда не позволяйте себе недооценивать
компилятор
Подведем итог
Глава 3.4. ES.50. Не приводите переменные
с квалификатором const к неконстантному типу
Работа с большим количеством данных
Брандмауэр const
Реализация двойного интерфейса
Кэширование и отложенные вычисления
Два вида const
Сюрпризы const
Подведем итог
Глава 3.5. E.28. При обработке ошибок
избегайте глобальных состояний
(например, errno)
Обрабатывать ошибки сложно
Язык C и errno
Коды возврата
Исключения
<system_error>
Boost.Outcome
Почему обрабатывать ошибки так сложно
Свет в конце туннеля
Подведем итог
Глава 3.6. SF.7. Не используйте using namespace в
глобальной области
видимости в заголовочном файле
Не делайте этого
Неоднозначность
Использование using
Куда попадают символы
Еще более коварная проблема
Решение проблемы операторов разрешения области
видимости
Искушение и расплата
Подведем итог
ЧАСТЬ IV
ИСПОЛЬЗУЙТЕ НОВУЮ ОСОБЕННОСТЬ ПРАВИЛЬНО
Глава 4.1. F.21. Для возврата нескольких
выходных значений
используйте структуры или кортежи
Форма сигнатуры функции
Документирование и аннотирование
Теперь можно вернуть объект
Можно также вернуть кортеж
Передача и возврат по неконстантной ссылке
Подведем итог
Глава 4.2. Enum.3. Старайтесь использовать
классы-перечисления вместо простых
перечислений
Константы
Перечисления с заданной областью видимости
Базовый тип
Неявное преобразование
Подведем итог
Глава 4.3. ES.5. Минимизируйте области
видимости
Природа области видимости
Область видимости блока
Область видимости пространства имен
Область видимости класса
Область видимости параметров функции
Область видимости перечисления
Область действия параметра шаблона
Область видимости как контекст
Подведем итог
Глава 4.4. Con.5. Используйте constexpr для
определения значений,
которые можно вычислить на этапе компиляции
От const к constexpr
С++ по умолчанию
Использование constexpr
inline
consteval
constinit
Подведем итог
Глава 4.5. T.1. Используйте шаблоны для
повышения уровня
абстрактности кода
Повышение уровня абстракции
Шаблоны функций и абстракция
Шаблоны классов и абстракция
Выбор имени - сложная задача
Подведем итог
Глава 4.6. T.10. Задавайте концепции для всех
аргументов шаблона
Как мы здесь оказались?
Ограничение параметров
Как абстрагировать свои концепции
Разложение на составляющие через концепции
Подведем итог
ЧАСТЬ V
ПИШИТЕ ХОРОШИЙ КОД ПО УМОЛЧАНИЮ
Глава 5.1. P.4. В идеале программа должна быть
статически типобезопасной
Безопасность типов - это средство защиты в C++
Объединения
Приведение
Целые без знака
Буферы и размеры
Подведем итог
Глава 5.2. P.10. Неизменяемые данные
предпочтительнее изменяемых
Неправильные значения по умолчанию
const в объявлениях функций
Подведем итог
Глава 5.3. I.30. Инкапсулируйте нарушения
правил
Сокрытие неприглядных вещей
Поддержание видимости, что все в порядке
Подведем итог
Глава 5.4. ES.22. Не объявляйте
переменные, пока не получите
значения для их инициализации
Важность выражений и операторов
Объявление в стиле C
Объявление с последующей инициализацией
Максимальное откладывание объявления
Локализация контекстно зависимой
функциональности
Устранение состояния
Подведем итог
Глава 5.5. Per.7. При проектировании учитывайте
возможность последующей оптимизации
Максимальная частота кадров
Работа вдалеке от железа
Оптимизация через абстракцию
Подведем итог
Глава 5.6. E.6. Используйте идиому RAII
для предотвращения утечек памяти
Детерминированное уничтожение
Утечка файлов
Почему это так важно
Все это выглядит чересчур сложным: будущие
возможности
Где все это получить
Заключение
Послесловие

Отзывы

Вопросы

Поделитесь своим мнением об этом товаре с другими покупателями — будьте первыми!

Дарим бонусы за отзывы!

За какие отзывы можно получить бонусы?
  • За уникальные, информативные отзывы, прошедшие модерацию
Как получить больше бонусов за отзыв?
  • Публикуйте фото или видео к отзыву
  • Пишите отзывы на товары с меткой "Бонусы за отзыв"
Правила начисления бонусов
Задайте вопрос, чтобы узнать больше о товаре
Если вы обнаружили ошибку в описании товара «Красивый C++. 30 главных правил чистого, безопасного и быстрого кода» (авторы: Грегори Кейт, Дэвидсон Дж. Гай), то выделите её мышкой и нажмите Ctrl+Enter. Спасибо, что помогаете нам стать лучше!
Ваш населённый пункт:
г. Москва
Выбор населённого пункта