Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Юра, твой пример с одним return, конечно, логичен. Но обрати внимание, что при этом всегда пробегаются все if - в отличие от случая со многими return, когда выход из функции получается сразу по достижении строки с условием.
ForexTools, спасибо, твои наработки по оформлению принял на вооружение.
Mathemat, ведь у условного оператора "if" существует еще такая примочка, как "else".
if(выражение1) оператор1;
else if(выражение2) оператор2;
else if(выражение3) оператор3;
else оператор4;
И тогда выполняется оператор после первого истинного условия и всё. Дальше не пробегаются все if. Если найдено истинное условие, выполняется соответствующий ему оператор и программа продолжает работу уже после этой конструкции (в конструкции дальше не ищет).
Да я и не спорю, Сергей. Тут-то я говорил о конструкции Юры.
Есть еще один интересный вопрос в "струю" обсуждения: Насколько ограничения платформы влияют на стиль написания MQL-программы? Ну например: код легче пишется, понимается\читается и поддерживается если какието логически обособленные вычисления выносятся в отдельные функции. Но каждый вызов функции это (особенно в интерпретаторе каким является MQL) это лишние затраты времени на выполнение. Однократный вызов - это конечно не критично, по нам в большинстве своем приходится писать такие вещи внутри цикла (for int i=0; i<Bars; i++) и т.п. и тут начинаеш решать что важнее - красивость кода ( в виде функций - чтобы потом саму понять что написал) или скорость его выполнения (копипастинг одинаковых фрагментов - чтобы твой цикл успел отработать весь до прихода очередного тика)?
Понятно, что в каждом конкретном случае - решение о проведении линии золотой середины - свое, но.... Кто как борет эту задачку?
Я в этой же ветке на первой страничке выложил результаты краткого исследования. При моем объеме вычислений (он небольшой) меня вполне устраивают функции - даже длиной в одну строку. Но здесь же в ветке есть и другие мнения.
Наверно, влияет. Раньше я считал идеальным древний язык Трубо Паскуаль. Там есть возможность структурирования функций, т.е. объявление функций в функциях. Си такого не позволяет. И я сейчас как раз нечто подобное и пытаюсь делать, но по сути на платформе Си. Конечно, это только внешняя видимость.
Теперь точнее, Сергей?
Раньше я считал идеальным древний язык Трубо Паскуаль. Там есть возможность структурирования функций, т.е. объявление функций в функциях.
Это как вабще? Лично я начал в свое время изучать языки програмирования с Си. Сейчас знаю два: Си и Си++. И надо сказать, другое изучать не тянет абсолютно. Зачем нужно объявлять функцию в функции? Лично, мне как выросшему исключительно на Си, Си++ непонятен этот прием.
А мне понятен, вот именно сейчас. Если у меня есть функции до шестого порядка вызова, то мне не всегда удобно мешать все функции разных порядков вызова в одну кучу. Теряется общий взгляд на структуру вызовов. А в Трубо Паскуале все с этим удобно: несколько главных функций, выполняющих ключевые обработки, а внутри скрыты все мелкие подфункции.
Но это, наверно, уже дело привычки. Давно я на нем ничего не писал - и не особо жалею.
Зачем нужно объявлять функцию в функции? Лично, мне как выросшему исключительно на Си, Си++ непонятен этот прием.
"Есть многое на свете друг Горацио, что и не снилось нашим мудрецам" ;)
в этом есть своя прелесть - инкапсуляция в инкапсуляции так сказать. А если серьезно - то реально полезная весчь если с умом пользоваться, как впрочем и всем остальным.
Mathemat Раньше я считал идеальным древний язык Трубо Паскуаль.
Я к нему тоже подумываю вернуться - хотябы в виде DLL на дельфях, устал извращаться на MQL чтобы сделать простейшие но необходимые вещи (например тот же банальный диалог с трейдером)
- В чем сила Брат!?
- Сила в Классах, брат!
По-моему что-то лучше классов еще не предумано. Объявите приватные функции внутри класса, и публичные функции для работы с ним. Красиво и мощно. Наследуйте функции и переменные, продумайте иерархию. Инкапсулируйте данные, создавая сложные структуры данных. Обрабатывайте данные универсальными алгоритмами из библиотеки стандартных шаблонов. Честно говоря в MQL4 жуто не хватает инкапсуляции. Приходится держать разные типы данных отдельно, а это черевато ошибками. Зачастую приходится следить за расихронизацией индексации массивов (ужасно неприятная ошибка). Думаю в MQL5 этому будет положен конец.