Обсуждение статьи "Использование утверждений (assertions) при разработке программ на MQL5" - страница 2

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- Форексный VPS бесплатно на 24 часа
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Для TEST_TEXT чтобы действительно было легко убирать условной компиляцией, я бы на Вашем месте рассмотрел вынос и Print'а внутрь макроса. В текущем варианте, мне кажется, легко убрать TEST_TEXT, но не сами Print'ы.
Просто в качестве источника вывода тестовой инфы в зависимости от ситуации и comment(), к примеру, может применяться и Alert() (чтоб иметь оперативное оповещение о чём-либо, без необходимости всматриваться в строки и если попутно, в том числе, он не раздражает и/или заведомо известно, что не будет "частить"), вместо Print().
Поэтому пока исходила и исхожу из того, что:
и далее компилятор быстро подскажет о ставших не рабочими строках. Да и применив поиск, можно полностью закомментировать не требуемые в данный момент одним нажатием кнопки в панели MetaEditor.
Но иметь в наличии какой-то универсальный вариант конечно, согласна, лучше.
Да, Сергей, думала о таком. Однако пока может просто мало думала об этом и не "доходили до этого руки".
Просто в качестве источника вывода тестовой инфы в зависимости от ситуации и comment(), к примеру, может применяться и Alert() (если, в том числе, не раздражает), вместо Print().
Поэтому пока исхожу из того, что:
и далее компилятор быстро подскажет о ставших не рабочими строках.
Но сформировать какой-то универсальный вариант конечно, согласна, лучше.
В принципе да, такой подход помогает полностью вычистить код от ставших неактуальными Print'ов. Правда, сколько раз случалось такое, что вроде не нужно оно уже, а потом через пару месяцев снова всё нужно :)
Но для такого такого случая можно попробовать откат до нужной версии из git/svn (как частный случай svn - MQL5 Storage), но с оговорками (откатив одно, мы можем потерять актуальность в другом).
В принципе да, такой подход помогает полностью вычистить код от ставших неактуальными Print'ов. Правда, сколько раз случалось такое, что вроде не нужно оно уже, а потом через пару месяцев снова всё нужно :)
Но для такого такого случая можно попробовать откат до нужной версии из git/svn (как частный случай svn - MQL5 Storage), но с оговорками (откатив одно, мы можем потерять актуальность в другом).
Не видя ещё ваш ответ, дополнила свой пост, уточняя. Но по смыслу он тот же остался и не в противовес вами далее сказанному.
Да..., вы правы, через какое-то время снова бывает нужно.) А строки те уже "подчищены" в рабочей версии и откат на более ранние действительно не всегда может быть целесообразен.
P./S.: Уточню ещё, что про поиск для только пока закомментировать не требуемые в данный момент (ещё до окончательного вычищения тестовых строк из кода), имела в виду не по "Поиск...", а по "Переходу к заданной строке" или "Списку функций в файле".
P./S.: Однако возвращаясь к статье, ещё раз всё-таки скажу, что возможность применять утверждения, как приводите в статье, было очень интересным. Спасибо.
Заодно, скачав файл assert.mqh, добавила туда себе до кучи строчку:
А в коде потом это, соответственно, примерно так выглядит:
То есть, что и просто при конструировании кода применять вывод информации с расчётом на то, что к завершению работы над кодом потом этот вывод "рабочей" инфы легко убрать (как и многие, полагаю, наверное так делали и делают с выводом инфы на этапах конструирования кода).
Возможно, пригодится и такой макрос
Возможно, пригодится и такой макрос
Возможно, пригодится и такой макрос
Не возможно, а действительно такое нужнО в хозяйстве. Спасибо.
Вы даёте хорошую основу, на которую можно нарастить и "мясо". В том числе, в очередной раз подтверждая, что гениальное просто.
И, предполагаю, видимо, и Сергей имел в виду что-то наподобие такого, когда писал здесь.
Однако мне ещё надо для самой себя со многим разобраться/знакомиться применительно таких построений.
В том числе, при применении преобразования данных перед выводом на печать (и с учётом вывода на печать не только через Print, но и в комментарий или алерт). И чтобы название переменной не терялось визуально на фоне DoubleToString, к примеру, или TimeToString.
То есть, сейчас записала, к примеру, так:
Во вкладке "Эксперты" это отображается так:
А на чарте такой же коммент, в случае применения.
То есть, переменная price_0 "теряется" на фоне DoubleToString.
Однако делать в коде с таким #define вывод тестовых строк уже проще, чем я приводила здесь ранее. Хотя пока это всё равно не будет ещё оптимальным вариантом.
P./S.: Сейчас подумалось, что то, что и применение преобразующих функций выводится и наглядно видно в тестовом тексте - это, наоборот, может быть полезным. В общем, не настолько сильно наименование переменной и теряется. Просто ранее для себя это не предполагалось и не привычно для глаз при выводе инфы.
Кстати, считаю, что было бы неплохо дополнить документацию про # и про многострочные макросы. Кто Си не учил, того могут немножко обескуражить коды в статье и комментариях :)
1. Почему макросы? Они же неудобные, не все условия им можно скормить, и дебажить их крайне сложно, если что-то пойдет не так. Проще было банальные процедуры реализовать.