Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Пишу так, потому что нравится. При этом при отладке все становится очень плохо.
Даже в таком выражении
тяжело понять, кто и что возвращал. В более сложных (постоянно практикую) - совсем тяжко.
использовать в качестве возвращаемого значения 2-3... ну пусть 5 результатов выполнения функций объединенные логическими операциями (или условный тернарный оператор) - видел такое на гитхабе или еще где, с таким кодом разобраться можно
но если этого "добра" с десяток другой... имхо, это не практично
я конечно далеко не разработчик mql,
но в C switch порождает довольно эффективный бинарный поиск и не вызывает лишних подкачек страниц и не сбивает кеши. То есть да, он часто лучше косвенной адресации через массивы и структуры
где то писали и тут разработчики похожую информацию
нашел только это:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Изучаем и пишем вместе на MQL5
Slava, 2011.04.14 09:59
Нет, к сожалению не будет. Для строковых типов только if ... else if ... else
За счёт использования целых типов в switch достигается нескольки кратное ускорение по сравнению с if
но если этого "добра" с десяток другой... имхо, это не практично
Маленький монстр.
логические операции позволяют лаконично писать при использовании различных настроек через макросы. Но это ужас, конечно.
логические операции позволяют лаконично писать при использовании различных настроек через макросы. Но это ужас, конечно.
Ваш пример из "цель оправдывает средства"
мой вопрос был про совсем другой и непонятный мне стиль
Маленький монстр.
Дарёному коню в зубы не смотрят. Но вот ещё пара примеров чужого кода, которые доставили мне несколько незабываемых десятков минут отладки. Возможно, кто-то узнает свой код.
Не знаю, было ли легко его так писать, но отлаживать, а тем более просто читать, его малореально. И объективных причин именно так написать не вижу.
И объективных причин именно так написать не вижу.
Они субъективны, конечно. Не люблю лишние переменные и несколько return. По какой-то причине считаю, что без них EX5 будет короче и выполняться быстрее.
Они субъективны, конечно. Не люблю лишние переменные и несколько return. По какой-то причине считаю, что без них EX5 будет короче и выполняться быстрее.
кстати вот эта уверенность что код будет короче и быстрее - не факт что оправдана.
вот это
и вот это
return A()||B()||X();
уверен будет одинаково по скорости (возможно и объему кода и использованной памяти)
Просто второй вариант быстрее написать, и все пишут его, а потом когда надо что-то добавить/усложнить, так и оставляют второй вариант, только уже раздутый до сложно-читаемого.
Периодически делать рефакторинг в этом плане - и не будет проблем.
Периодически делать рефакторинг в этом плане - и не будет проблем.
Только для тех, у кого уйма свободного времени или объективно прижало настолько, что никуда не деться без этого.
ЗЫ Когда много return, код 100% будет иным.Только для тех, у кого уйма свободного времени или объективно прижало настолько, что никуда не деться без этого.
ЗЫ Когда много return, код 100% будет иным.понимаю, но частично согласен, просто думаю все сталкивались с относительно долгим отловом ошибок, которые бы нашлись быстрее будь код "идеально готовым" для отладки.
Неизвестно что съедает времени больше - более долгое написание "удобного" кода или отладка и поиск багов, всегда по разному думаю.
ЗЫ Когда много return, код 100% будет иным.
C++ VS2019 под отладчиком
исходник:
отладчик в asm
свел по командам один вызов просто в 2 столбца, чтобы не считать:
как видно, тут и команды почти друг друга повторяют, понятное дело, что в первом тесте нужно добавить еще несколько return
с 99% уверенностью, считаю, что на уровне процессора эти коды будут выполняться с одинаковой скоростью до такта - в процессоре еще оптимизация, распараллеливание и хз что еще на уровне микрокоманд работает