Сбор лучших практик C++
Читая наши статьи, вы можете задаться вопросом: почему они всегда говорят о плохом? Этот код содержит ошибку; здесь пахнет кодом; это антипаттерн — не пишите так. Итак, не могли бы вы помочь мне взглянуть на светлую сторону программирования на C++? Не стесняйтесь оставлять комментарии.
Недавно я наткнулся на обсуждение на Reddit « Хорошие репозитории для новичков, которые следуют лучшим современным практикам C++ (включая тестирование, статический анализ и т. д.) ». Тема не самая длинная, но все равно довольно интересная. Тогда мне в голову пришла идея — почему бы мне не разместить опрос на Habr.com? Я сделал то же самое с ужасными советами по кодированию.
Кстати, идея написать статью об ужасных советах по программированию развивается. В скором времени я планирую опубликовать книгу с 60 антипаттернами на C++. Подпишитесь на нашу ежемесячную рассылку, если не хотите пропустить самые интересные публикации.
Итак, тема ужасных советов по кодированию закрыта :). Пришло время поговорить о хороших практиках!
Я иду первым. Тогда я приглашаю вас присоединиться ко мне и написать в комментариях:
- какие инструменты вы рекомендуете;
- какими интересными и полезными библиотеками вы пользуетесь;
- какие проекты полезны при изучении C++;
- какие практики, стандарты кодирования вы можете посоветовать;
- и так далее.
- СовременныйCppStarter . Начни свой C++! Шаблон для современных проектов C++ с использованием CMake, CI, покрытия кода, clang-формата, воспроизводимого управления зависимостями и многого другого.
- gui_starter_template . Это шаблон GitHub с рекомендациями по C++ для быстрого начала работы с C++.
Примечание для себя. Если я позже напишу статью по собранной информации, мне нужно будет проверить эти и другие предложенные проекты с помощью PVS-Studio. Библиотеки бывают разные, знаете ли… Я не хочу рекомендовать что-то потенциально глючное в качестве примера для подражания.
- Трудолюбивый двигатель . Твит о современной кроссплатформенной низкоуровневой библиотеке 3D-графики и платформе рендеринга.
- JSON для современного C++ . Интуитивно понятный синтаксис. Тривиальная интеграция. Серьезное тестирование. Эффективность памяти. Скорость.
- Stroika — это современная, переносимая, ориентированная на потоки среда разработки приложений C++. Он упрощает написание высокопроизводительных приложений на C++, предоставляя безопасные, гибкие, модульные строительные блоки.
- concurrencpp . Современный параллелизм для C++. Задачи, исполнители, таймеры и сопрограммы C++20, чтобы управлять всем этим.
- круто-HPP . Кураторский список замечательных библиотек C++ только для заголовков.
- Здесь я приглашаю вас прочитать статью моего коллеги « Ускорение сборки проектов C и C++ ».
- Существуют различные старые и новые дискуссии на эту тему. С удовольствием узнаю от вас что-то новое, интересное по этой теме. Заранее спасибо.
- Базовые рекомендации C++ — это совместная работа под руководством Бьерна Страуструпа, как и сам язык C++. Они являются результатом многих человеко-лет обсуждения и разработки в ряде организаций.
- Совместная коллекция лучших практик C++ . Этот онлайн-ресурс является частью коллекции Джейсона Тернера, посвященной рекомендациям по C++. Кстати, раз уж я упомянул Джейсона, вот ссылка на его канал C++ Weakly .
- Руководство по стилю Google C++ . Цель этого руководства — справиться с этой сложностью, подробно описав, что нужно и что нельзя делать при написании кода на C++. Эти правила существуют, чтобы поддерживать управляемость кодовой базы, позволяя программистам продуктивно использовать возможности языка C++.
- AddressSanitizer находит ошибки памяти.
- LeakSanitizer ищет утечки памяти.
- ThreadSanitizer обнаруживает гонки за данными и взаимоблокировки.
- MemorySanitizer ищет неинициализированную память.
- HWASAN , или AddressSanitizer с аппаратной поддержкой, новый вариант AddressSanitizer, который использует меньше памяти.
- UBsan обнаруживает неопределенное поведение в программе.
- Здесь я буду тупить и упомяну только нашу PVS-Studio. А почему бы не? Это замечательный и мощный статический анализатор кода . Инструмент помогает найти множество ошибок и потенциальных уязвимостей еще на этапе написания кода на C++.
- ДЕЛАТЬ. Я также рад услышать о вашем успешном опыте использования других статических анализаторов кода.
- Я всегда рекомендую всем прочитать Code Complete Стива МакКоннелла (ISBN 0–7356–1967–0).
- Лучшие практики C++ (2019) .
- Главный вопрос программирования, рефакторинга и всего остального .
- Стандарты кодирования C++: 101 правило, руководство и передовой опыт .
- Скотт Мейерс. Эффективный C ++: 55 конкретных способов улучшить ваши программы и проекты (3-е издание).
- Скотт Мейерс. Эффективный современный C++: 42 конкретных способа улучшить использование C++11 и C++14».
Пожалуйста, делитесь всем, что вы считаете полезным для программистов на C++!

![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































