Стандарты программирования на С++

Стандарты программирования на С++

Предпочитайте предоставление абстрактных интерфейсов
Открытое наследование означает
Обсуждение
Практикуйте безопасное перекрытие
Виртуальные функции стоит делать неоткрытыми, а открытые — невиртуальными

Избегайте возможностей неявного преобразования типов
Делайте данные-члены закрытыми (кроме случая агрегатов в стиле структур C)
Не допускайте вмешательства во внутренние дела
Разумно пользуйтесь идиомой Pimpl
Предпочитайте функции, которые не являются ни членами, ни друзьями


New и delete всегда должны разрабатываться вместе

При наличии пользовательского
Конструкторы, деструкторы и копирование
Определяйте и инициализируйте переменные-члены в одном порядке
В конструкторах предпочитайте инициализацию присваиванию
Избегайте вызовов виртуальных функций в конструкторах и деструкторах
Делайте деструкторы базовых

Деструкторы, функции освобождения ресурсов и обмена не ошибаются
Копируйте и ликвидируйте согласованно
Явно разрешайте или запрещайте копирование
Избегайте срезки. Подумайте
Предпочитайте канонический вид присваивания

Обеспечьте бессбойную функцию обмена
Пространства имен и модули
Храните типы и их свободный интерфейс в одном пространстве имен
Храните типы и функции в разных
Не используйте using для пространств

Избегайте выделения и освобождения памяти в разных модулях
Не определяйте в заголовочном файле объекты со связыванием
Не позволяйте исключениям пересекать границы модулей

Используйте достаточно переносимые типы в интерфейсах модулей
Шаблоны и обобщенность
Разумно сочетайте статический и динамический полиморфизм
Выполняйте настройку явно и преднамеренно
Не специализируйте шаблоны функций

Пишите максимально обобщенный код
Обработка ошибок и исключения
Широко применяйте assert для документирования внутренних допущений и инвариантов
Определите разумную стратегию обработки ошибок и строго ей следуйте
Отличайте ошибки от ситуаций, не являющихся ошибками
Содержание раздела