Сбор лучших практик C++

Dec 28 2022
Читая наши статьи, вы можете задаться вопросом: почему они всегда говорят о плохом? Этот код содержит ошибку; здесь пахнет кодом; это антипаттерн — не пишите так. Итак, не могли бы вы помочь мне взглянуть на светлую сторону программирования на C++? Не стесняйтесь оставлять комментарии.

Читая наши статьи, вы можете задаться вопросом: почему они всегда говорят о плохом? Этот код содержит ошибку; здесь пахнет кодом; это антипаттерн — не пишите так. Итак, не могли бы вы помочь мне взглянуть на светлую сторону программирования на C++? Не стесняйтесь оставлять комментарии.

Недавно я наткнулся на обсуждение на Reddit « Хорошие репозитории для новичков, которые следуют лучшим современным практикам C++ (включая тестирование, статический анализ и т. д.) ». Тема не самая длинная, но все равно довольно интересная. Тогда мне в голову пришла идея — почему бы мне не разместить опрос на Habr.com? Я сделал то же самое с ужасными советами по кодированию.

Кстати, идея написать статью об ужасных советах по программированию развивается. В скором времени я планирую опубликовать книгу с 60 антипаттернами на C++. Подпишитесь на нашу ежемесячную рассылку, если не хотите пропустить самые интересные публикации.

Итак, тема ужасных советов по кодированию закрыта :). Пришло время поговорить о хороших практиках!

Я иду первым. Тогда я приглашаю вас присоединиться ко мне и написать в комментариях:

  • какие инструменты вы рекомендуете;
  • какими интересными и полезными библиотеками вы пользуетесь;
  • какие проекты полезны при изучении C++;
  • какие практики, стандарты кодирования вы можете посоветовать;
  • и так далее.
  1. СовременныйCppStarter . Начни свой C++! Шаблон для современных проектов C++ с использованием CMake, CI, покрытия кода, clang-формата, воспроизводимого управления зависимостями и многого другого.
  2. gui_starter_template . Это шаблон GitHub с рекомендациями по C++ для быстрого начала работы с C++.

Примечание для себя. Если я позже напишу статью по собранной информации, мне нужно будет проверить эти и другие предложенные проекты с помощью PVS-Studio. Библиотеки бывают разные, знаете ли… Я не хочу рекомендовать что-то потенциально глючное в качестве примера для подражания.

  1. Трудолюбивый двигатель . Твит о современной кроссплатформенной низкоуровневой библиотеке 3D-графики и платформе рендеринга.
  2. JSON для современного C++ . Интуитивно понятный синтаксис. Тривиальная интеграция. Серьезное тестирование. Эффективность памяти. Скорость.
  3. Stroika — это современная, переносимая, ориентированная на потоки среда разработки приложений C++. Он упрощает написание высокопроизводительных приложений на C++, предоставляя безопасные, гибкие, модульные строительные блоки.
  4. concurrencpp . Современный параллелизм для C++. Задачи, исполнители, таймеры и сопрограммы C++20, чтобы управлять всем этим.
  5. круто-HPP . Кураторский список замечательных библиотек C++ только для заголовков.
  1. Здесь я приглашаю вас прочитать статью моего коллеги « Ускорение сборки проектов C и C++ ».
  2. Существуют различные старые и новые дискуссии на эту тему. С удовольствием узнаю от вас что-то новое, интересное по этой теме. Заранее спасибо.
  1. Базовые рекомендации C++ — это совместная работа под руководством Бьерна Страуструпа, как и сам язык C++. Они являются результатом многих человеко-лет обсуждения и разработки в ряде организаций.
  2. Совместная коллекция лучших практик C++ . Этот онлайн-ресурс является частью коллекции Джейсона Тернера, посвященной рекомендациям по C++. Кстати, раз уж я упомянул Джейсона, вот ссылка на его канал C++ Weakly .
  3. Руководство по стилю Google C++ . Цель этого руководства — справиться с этой сложностью, подробно описав, что нужно и что нельзя делать при написании кода на C++. Эти правила существуют, чтобы поддерживать управляемость кодовой базы, позволяя программистам продуктивно использовать возможности языка C++.
  1. AddressSanitizer находит ошибки памяти.
  2. LeakSanitizer ищет утечки памяти.
  3. ThreadSanitizer обнаруживает гонки за данными и взаимоблокировки.
  4. MemorySanitizer ищет неинициализированную память.
  5. HWASAN , или AddressSanitizer с аппаратной поддержкой, новый вариант AddressSanitizer, который использует меньше памяти.
  6. UBsan обнаруживает неопределенное поведение в программе.
  1. Здесь я буду тупить и упомяну только нашу PVS-Studio. А почему бы не? Это замечательный и мощный статический анализатор кода . Инструмент помогает найти множество ошибок и потенциальных уязвимостей еще на этапе написания кода на C++.
  2. ДЕЛАТЬ. Я также рад услышать о вашем успешном опыте использования других статических анализаторов кода.
  1. Я всегда рекомендую всем прочитать Code Complete Стива МакКоннелла (ISBN 0–7356–1967–0).
  2. Лучшие практики C++ (2019) .
  3. Главный вопрос программирования, рефакторинга и всего остального .
  4. Стандарты кодирования C++: 101 правило, руководство и передовой опыт .
  5. Скотт Мейерс. Эффективный C ++: 55 конкретных способов улучшить ваши программы и проекты (3-е издание).
  6. Скотт Мейерс. Эффективный современный C++: 42 конкретных способа улучшить использование C++11 и C++14».

Пожалуйста, делитесь всем, что вы считаете полезным для программистов на C++!