Re[7]: [Этюд] Минутка WTF-2: string interpolation
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.04.16 15:04
Оценка: 66 (1) +2
Здравствуйте, Sinix, Вы писали:

VD>>Макра мало чем от функции отличается. Отладил и используешь неограниченное время. Тем более такая простая.

S>Такая простая — да, чуть посложнее — надо очень внимательным быть.

Примерно как с любым другим кодом.

При росте объемов неизбежно поддержка усложняется. Но макры не надо применять там где без них можно успешно обходиться. А там где они дают преимущества (как в приведенном сценарии) у тебя и выбора особо нет. Или говнокод и приседания в основном коде, или потратить время на макрос.

Вот возьмем к примеру тот же макрос сериализации сообщений.

Написать его сложнее. Найти багу, если что — тоже. Но ведь он дает принципиально иной результат. При этом пишется макрос ровно один раз, а потом в коде одна красота и минимум накладных расходов.

Без макросов эта задача решается менее эффективно и приводит к существенно большему объему кода.

S>Потому что если в часто используемой функции баг — достаточно выпустить минорный фикс.

S>Если такой же баг в кодогенерации — надо перепоставлять весь код.

Это какой-то фантастический случай. Если макрос писался по делу (а не кто-то набыдлокодил потому что мог), вместо использования макроса ты будешь вынужден разнести кучу не очень красивого кода по всему проекту (возможно не по одному).

Берем твоей текущий пример. Вместо макры ты будешь вынужден использовать менее эффективный и менее элегантный вариант принимающий форматную строку и доп. параметры или загадить код ВСЕГО ПРОЕКТА if-ами.

При этом, если концепция (паттерн) изменится или найдется баг, в случае макры ты поменяешь ровно одно место в программе, а в случае с обыным кодом придется перелопатить весь проект.

S>Для проекта в несколько сотен МБ бинарников это упс.


Вот именно!

Просто надо понять, что если проблема нормально решается без макросов, то их просто не надо применять. Тут они очень похожи на классы. Если задача укладывается в несколько функций, то класс вводить не стоит.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Отредактировано 01.04.2016 18:49 VladD2 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.