Библиотеки: Price_Compare - страница 4

 
Koldun Zloy:

Это всё баловство. Не так трудно вставить необходимый код в функцию.

Вы фактически скрываете от пользователя библиотеки, что в функцию добавляется какой-то код.

Если Вам придётся разбираться с такими трюками в чужой программе, Вы проклянёте автора.

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

А вот пример неправильного использования макросов в Вашей библиотеке:

Этот макрос скрывает, что в этом месте может быть выход из функции.

Для чего он нужен вообще? Ради копеечной экономии букв? Это несерьёзно.

Вырывать так из контекста нехорошо. Макрос используется в каждой On-функции.

Допустимо использовать макросы для условной компиляции и для объявления типа (пока нет нормального typedef).

Ещё иногда приходится объявлять константы при помощи макросов.

Во всех остальных случаях макросы только запутывают код.

Вот яркий пример запутывания: https://www.mql5.com/ru/forum/170952/page50#comment_5488178

Этот чем плох?

#define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)


А если нужно заменить OrdersTotal()? 

 

Вырывать так из контекста нехорошо. Макрос используется в каждой On-функции.

Я их все видел. Во всех этих функциях он не делает ничего полезного.

Этот чем плох?

#define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

Он также ничего не делает, только запутывает.

А если нужно заменить OrdersTotal()


Не нужно заменять OrdersTotal().

 
Koldun Zloy:

Я их все видел. Во всех этих функциях он не делает ничего полезного.

Он также ничего не делает, только запутывает.

Не нужно заменять OrdersTotal().

Услышал Вас. Не знаю, насколько удобно использовать другим выложенные библиотеки и сколько людей являются их пользователями.

Поэтому за других не скажу. Возможно, когда-нибудь дорасту до иного отношения к макросам. Сейчас же не могу с Вами согласиться.