Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Это (и все, начинающиеся с подчеркивания) - протектед-функция класса.
Дык они ж и слиты в одну !
Функция одна - Compare(), но в ней надо произвести сравнение по передаваемому ключу. Соответственно, выбирается одна из конкретных протектед-функций. Поэтому они и защищенные (протектед), чтобы пользователь не мог к ним обратиться - обращение к ним осуществляется исключительно из Compare(), что и показывает подчеркивание.
Это тоже одно из правил оформления кода - функция, начинающаяся с подчеркивания - не предназначена для вызова пользователями, она обслуживает только определенные внутриклассовые задачи. Доступ к ней - ограничен.
Ну зачем же такие цирковые выкрутасы, когда все гораздо проще делается через классику. Пользуйте функции обертки и фигурные скобки для скрытия вложенных переменных и функций и предотвращения доступа к ним и будет вам щастье. С этими протектедами лишь запутаете себя и других...
Ну зачем же такие цирковые выкрутасы, когда все гораздо проще делается через классику. Пользуйте функции обертки и фигурные скобки для скрытия вложенных переменных и функций и предотвращения доступа к ним и будет вам щастье. С этими протектедами лишь запутаете себя и других...
Не понял... Протектед (protected) - это модификатор доступа для функции. То есть, используется протектед-функция, доступ к которой возможен только из функции класса или его потомка. Плюс символ подчеркивания лично для меня означает, что при использовании существуют некоторые неявные предположения, которые надо учитывать.
Dennis Kirichenko верно заметил - можно было бы все написать одной функцией Compare(). Но тогда бы она получилась на два десятка экранов, Обозреть ее было бы нереально, модифицировать - труднее, чем сейчас.
Я оставил в функции Compare() только селектор ключа, а код, который производит сравнение по конкретным ключам - развел по отдельным функциям. Поскольку эти функции сильно контекстно-специфические, они объявлены в protected-секции класса, для того, чтобы к ним можно было бы получить доступ исключительно из другой функции класса или потомка. А чтобы еще и самому себе напомнить о том, что эти функции предназначены для выполнения конкретной узкой задачи внутри другой функции - я их начинаю с подчеркивания. Если в будущем я наткнусь на такую функцию - я сразу буду видеть, что существуют неявные предположения, которые необходимо учитывать при ее вызове.
Похоже, ты (давай на "ты") не вполне представляешь, что такое модификаторы доступа, и зачем они нужны.
Не понял... Протектед (protected) - это модификатор доступа для функции. То есть, используется протектед-функция, доступ к которой возможен только из функции класса или его потомка. Плюс символ подчеркивания лично для меня означает, что при использовании существуют некоторые неявные предположения, которые надо учитывать.
Ну вот только без оскорблений личностных...
Ну так ограничить к функции доступ можно и классическими способами, без всякого ООП.
Как ?
Вот задача - сделать так, чтобы в дальнейшем, при модификации кода было бы невозможно взять, и использовать определенную функцию "где попало". Как это сделать без ООП-ограничения доступа пространством класса с помощью модификаторов public-protected-private ?
По всей видимости, static и const (это не ООП) не нужны.
Что же касается ООП, то очень интересно, как будет выглядеть в процедурном стиле следующая, имеющая широкое практическое применение (совсем не абстрактная), функция?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Организация цикла перебора ордеров
fxsaber, 2017.10.18 12:29
Эта версия особенно актуальна для MT5 на VPS, т.к. MT5 работает с Историей очень медленно и затратно по вычислительным ресурсам.
Очевидно, что любой ООП можно переписать в процедурном стиле. Но интересует практика. Поэтому взял вышеприведенный крохотный код, где и ООП используется по минимуму.
Так насколько красивее/удобнее/читабельнее/правильнее процедурный стиль по сравнению с ООП будет в данном примере? Ну чтобы не голословить несколько страниц, а просто сравнить короткие исходники процедурный vs ООП. Прошу противников ООП показать мастер-класс. Это не страшный MT5, а старый добрый MT4.
Пожалуйста почисти ветку от флуда, оставь только обучающие посты Alexey Volchanskiy
уже поздно ))) тем более, я только на выхи найду время, неожиданно получилось, что сильно занят
на выхи сделаю немного по учебе, может и ролики получится
Пожалуйста почисти ветку от флуда, оставь только обучающие посты Alexey Volchanskiy
Владимир, если за все эти годы так и не нучились, думаю уже поздно начинать;)
По всей видимости, static и const (это не ООП) не нужны.
Что же касается ООП, то очень интересно, как будет выглядеть в процедурном стиле следующая, имеющая широкое практическое применение (совсем не абстрактная), функция?
Очевидно, что любой ООП можно переписать в процедурном стиле. Но интересует практика. Поэтому взял вышеприведенный крохотный код, где и ООП используется по минимуму.
Так насколько красивее/удобнее/читабельнее/правильнее процедурный стиль по сравнению с ООП будет в данном примере? Ну чтобы не голословить несколько страниц, а просто сравнить короткие исходники процедурный vs ООП. Прошу противников ООП показать мастер-класс. Это не страшный MT5, а старый добрый MT4.
Владимир, если за все эти годы так и не нучились, думаю уже поздно начинать;)
А можно уточнить, кто они и чему не научились? Модераторы не научились чистить или что-то другое )
ЗЫ: кстати, во всей ветке не увидел ни одного пожелания по освещению какой-либо темы, как всегда, обычная грызня. Так что я решил роликов на ютубе записать с нуля по устройству ООП, хоть какая-то польза будет. Все равно ветка через какое-то время окажется в ветко_отстойнике.