В каких ситуациях лучше использовать #define? c++

Есть файл определения функций из класса, в котором перед каждой функцией прописано:

template <typename KEY_TYPE, typename VALUE_TYPE>

стоит ли 'задефайнить' эту строку и заменить ее на что-то более простое, наподобие:

#define TEMPLATE template <typename KEY_TYPE, typename VALUE_TYPE>

или же в этой ситуации это наоборот переусложнение кода?

Аналогичный вопрос с

CustomClass<KEY_TYPE, VALUE_TYPE>

используется еще чаще чем предыдущее.


Ответы (1 шт):

Автор решения: HolyBlackCat

Вопрос субъективный, но все равно отвечу. Ниже только мое мнение.


Мне кажется это все сомнительные варианты использования #define.

Сделайте названия параметров покороче, и будет не так неприятно их постоянно писать. Как вариант, перенесите функции в тело класса, все равно современные IDE умеют их сворачивать.

Макросы должны быть крайним средством. Они подходят:

  • Для условной компиляции.
  • Чтобы добиться соблюдения DRY, если больше ничего не помогает. (А-ля "объявить enum и функции для его преобразования в строку и обратно".) Это не про ваш случай.
  • Чтобы избежать особо некрасивого синтаксиса. (Пример.)

И макросы должны быть максимально общими, не привязанными к предметной области или конкретному файлу (если это не какой-нибудь одноразовый x-macro).

→ Ссылка