В каких ситуациях лучше использовать #define? c++
Есть файл определения функций из класса, в котором перед каждой функцией прописано:
template <typename KEY_TYPE, typename VALUE_TYPE>
стоит ли 'задефайнить' эту строку и заменить ее на что-то более простое, наподобие:
#define TEMPLATE template <typename KEY_TYPE, typename VALUE_TYPE>
или же в этой ситуации это наоборот переусложнение кода?
Аналогичный вопрос с
CustomClass<KEY_TYPE, VALUE_TYPE>
используется еще чаще чем предыдущее.
Ответы (1 шт):
Вопрос субъективный, но все равно отвечу. Ниже только мое мнение.
Мне кажется это все сомнительные варианты использования #define.
Сделайте названия параметров покороче, и будет не так неприятно их постоянно писать. Как вариант, перенесите функции в тело класса, все равно современные IDE умеют их сворачивать.
Макросы должны быть крайним средством. Они подходят:
- Для условной компиляции.
- Чтобы добиться соблюдения DRY, если больше ничего не помогает. (А-ля "объявить enum и функции для его преобразования в строку и обратно".) Это не про ваш случай.
- Чтобы избежать особо некрасивого синтаксиса. (Пример.)
И макросы должны быть максимально общими, не привязанными к предметной области или конкретному файлу (если это не какой-нибудь одноразовый x-macro).