Новички, с какими трудностями в программировании на MQL вы сталкиваетесь в 2025 году? - страница 21
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
template method pattern
Ну без ООП тоже можно что-то подобное, наверное, если раздуть сигнатуру указателями на функции. Так-то, в теории, можно обернуть указатели на функции в структуру чтобы не раздувать сигнатуру шаблонного метода. Я не пробовал так делать, но звучит сложнее, чем с ООП разобраться.
Поправка: у Вас разбухает в разы, у Вас начинает теряться контекст. Почему: ответил в предыдущем посте. Но важное уточнение: это управление сложностью. Сложность постоянно растет и никуда не девается. Вы можете лишь эту сложность равномерно распределять, так что бы в каждой отдельной единицы программы она была не высока, настолько, что бы ее можно было понять достаточно просто. Весь секрет. ООП для этого не нужен. Но дальше, после определенного уровня сложности, композиции по функциям становится уже не достаточно. Но все равно нужно вначале хорошо так упереться на первом уровне, что бы понять следующий.
Я пытался разбираться с паттернами проектирования и вот этим всем. Имхо все это нужно в энтерпрайзе. Когда пишешь для себя и код в основном одноразовый легко обойтись процедурным стилем. Я только пару раз уперся, когда прям чувствовалось что нужно создать отдельные классы иначе будет полная каша.
Буквально на днях был показательный пример, разбирал класс CCustomSymbol, надо было переделать под другую биржу и restapi. Взять готовое, написать виртуальные функции не получилось бы. Стал прикидывать что где надо менять, из-за раздутого кода быстро теряется контекст, много функций мне все равно не нужны были и нужно было еще своих добавить. В общем плюнул, по быстрому сделал в процедурном стиле с нуля. Не ломал голову какой функционал понадобится через 10 лет, как инвертировать зависимости, когда нужно будет тогда и наращу функционал, зато ментальную энергию сохранил. Мне этот код не надо на выставку везти, главное чтоб работал здесь и сейчас.
Т.е. как только начинаете не понимать свой код, решаете, что не очень-то он и нужен?
Т.е. как только начинаете не понимать свой код, решаете, что не очень-то он и нужен?
Объективности ради в research так примерно и происходит. Пишут одноразовый код для проверки гипотез. Если взлетело - начинают энтерпрайзно переписывать, а зачастую и так оставляют, по принципу "раз работает - не трожь".
У меня случай был. Была ТС-ка которая показывала ну очень не дурные результаты. И вот решил я сделать рефакторинг. Сразу попалось подозрительное условие if, с явной ошибкой. Убар его и привел ТС к первоначальному замыслу. Прогнав ее на тестере ужаснулся, прибыль практически полностью исчезла и ТС кардинальным образом ухудшилась.
Алексей, мне кажется, это неправильный пример для демонстрации понятия виртуальная функции. Так как если вы уберёте только слово "virtual" в этом коде, то по идее получите точно такие же результаты. И тогда не понятно, что привносит указание virtual.
Возможно не самый наглядный пример.
Я столкнулся вплотную с виртуальными функциями когда мне пришлось добавлять объекты в список проверяя не добавлен ли такой ранее. В этой проверке списка участвует виртуальный метод Compare из класса CObjekt который просто возвращает 0
следовательно этот метод должен быть для разных случаев разный и без него не обойтись используя СБ. Получается, либо писать виртуальную функцию, либо писать свои проверки и сортировки, а это утомительно…
Возможно не самый наглядный пример.
Я столкнулся вплотную с виртуальными функциями когда мне пришлось добавлять объекты в список проверяя не добавлен ли такой ранее. В этой проверке списка участвует виртуальный метод Compare из класса CObjekt который просто возвращает 0
следовательно этот метод должен быть для разных случаев разный и без него не обойтись используя СБ. Получается, либо писать виртуальную функцию, либо писать свои проверки и сортировки, а это утомительно…
Уже где то спрашивал, ответа не получил
Подскажите пожалуйста, как остановить принудительное обновление и перезагрузку МТ5?
Уже где то спрашивал, ответа не получил
Подскажите пожалуйста, как остановить принудительное обновление и перезагрузку МТ5?
Подключаясь к MetaQuotes-Demo серверу, вы разрешаете автоматическую загрузку и установку бетта билдов. Если не подключаться к демо серверу от MQ, то терминал не должен самовольно обновляться до бетта сборок.