Pull to refresh

Comments 9

Отличная коллекция для НГ каникул!
Спасибо :)

Рекомендую не обходить стороной YouTube. Там всегда найдется что-то интересное. Например, доклады с конференций, подкасты, обучающие видео. Мой личный список интересных каналов:

Еще из мыслей – раз статический и динамический упомянули, то не забываем и про unit-тестирование :) Библиотек для этого – вагон и маленькая тележка, но лично приходилось пользоваться этим:

От меня подписка и статью в закладки. Спасибо. И всех с Наступающим 👍👍👍

Могу порекомендовать репозиторий C++ links, где автор публикует найденные полезные ресурсы по С++ по различным категориям.

В качестве "боевой" библиотеки для изучения, рекомендую pocoproject.org, хорошая структура кода для ознакомления с ооп и не только.

По поводу статьи
https://pvs-studio.ru/ru/blog/posts/cpp/0391
и совета 35 из неё

Добавляя в enum новую константу, не забываем поправить операторы switch

хочу добавить практический совет, который очень мне помогал. Можно у enum определять последнее значение LAST:

enum InputFormat
{
    InputFormatScalar,
    InputFormatSpectralReflectance,
    InputFormatSpectralIlluminance,
    InputFormatSpectralReflectanceWithAlpha,
    InputFormatSpectralIlluminanceWithAlpha,
    InputFormatEntity,
    LAST_InputFormat = InputFormatEntity
};

А затем около каждого switch (да и других операций, которые зависят от полного набора enum) приучить себя писать:

static_assert( LAST_InputFormat == 6, "InputFormat has a new value" );

прямо вот так, с магической шестёркой. Когда добавится новая константа в enum, код перестанет компилироваться, пока программист явно не пройдёт все такие места, не поправит их (или просто не окинет взглядом, сломалось что-то или нет) и явно не поменяет шестёрку на семёрку у ассерта.

P.S.: Написал LAST_InputFormat, а не просто LAST, потому что enum, а не enum class. Тот же самый код для enum class:

enum class InputFormat
{
    InputFormatScalar,
    InputFormatSpectralReflectance,
    InputFormatSpectralIlluminance,
    InputFormatSpectralReflectanceWithAlpha,
    InputFormatSpectralIlluminanceWithAlpha,
    InputFormatEntity,
    LAST = InputFormatEntity
};
static_assert( static_cast<int>( InputFormat::LAST ) == 6, "InputFormat has a new value" );
Sign up to leave a comment.