О стиле кодирования - страница 4

 
Mathemat >>:

Юра, твой пример с одним 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++) и т.п. и тут начинаеш решать что важнее - красивость кода ( в виде функций - чтобы потом саму понять что написал) или скорость его выполнения (копипастинг одинаковых фрагментов - чтобы твой цикл успел отработать весь до прихода очередного тика)?

Понятно, что в каждом конкретном случае - решение о проведении линии золотой середины - свое, но.... Кто как борет эту задачку?

 

Я в этой же ветке на первой страничке выложил результаты краткого исследования. При моем объеме вычислений (он небольшой) меня вполне устраивают функции - даже длиной в одну строку. Но здесь же в ветке есть и другие мнения.

 
Я не про то... я про то - насколько сильно сказывается на стиле кодинга необходимость учета внешних ограничений платформы (любой - не только МТ)
 

Наверно, влияет. Раньше я считал идеальным древний язык Трубо Паскуаль. Там есть возможность структурирования функций, т.е. объявление функций в функциях. Си такого не позволяет. И я сейчас как раз нечто подобное и пытаюсь делать, но по сути на платформе Си. Конечно, это только внешняя видимость.

Теперь точнее, Сергей?

 

Раньше я считал идеальным древний язык Трубо Паскуаль. Там есть возможность структурирования функций, т.е. объявление функций в функциях.

Это как вабще? Лично я начал в свое время изучать языки програмирования с Си. Сейчас знаю два: Си и Си++. И надо сказать, другое изучать не тянет абсолютно. Зачем нужно объявлять функцию в функции? Лично, мне как выросшему исключительно на Си, Си++ непонятен этот прием.

 
C-4 >>: Зачем нужно объявлять функцию в функции? Лично, мне как выросшему исключительно на Си, Си++ непонятен этот прием.

А мне понятен, вот именно сейчас. Если у меня есть функции до шестого порядка вызова, то мне не всегда удобно мешать все функции разных порядков вызова в одну кучу. Теряется общий взгляд на структуру вызовов. А в Трубо Паскуале все с этим удобно: несколько главных функций, выполняющих ключевые обработки, а внутри скрыты все мелкие подфункции.

Но это, наверно, уже дело привычки. Давно я на нем ничего не писал - и не особо жалею.

 
C-4 >>:

Зачем нужно объявлять функцию в функции? Лично, мне как выросшему исключительно на Си, Си++ непонятен этот прием.

"Есть многое на свете друг Горацио, что и не снилось нашим мудрецам" ;)

в этом есть своя прелесть - инкапсуляция в инкапсуляции так сказать. А если серьезно - то реально полезная весчь если с умом пользоваться, как впрочем и всем остальным.

Mathemat Раньше я считал идеальным древний язык Трубо Паскуаль.

Я к нему тоже подумываю вернуться - хотябы в виде DLL на дельфях, устал извращаться на MQL чтобы сделать простейшие но необходимые вещи (например тот же банальный диалог с трейдером)

 

- В чем сила Брат!?

- Сила в Классах, брат!

По-моему что-то лучше классов еще не предумано. Объявите приватные функции внутри класса, и публичные функции для работы с ним. Красиво и мощно. Наследуйте функции и переменные, продумайте иерархию. Инкапсулируйте данные, создавая сложные структуры данных. Обрабатывайте данные универсальными алгоритмами из библиотеки стандартных шаблонов. Честно говоря в MQL4 жуто не хватает инкапсуляции. Приходится держать разные типы данных отдельно, а это черевато ошибками. Зачастую приходится следить за расихронизацией индексации массивов (ужасно неприятная ошибка). Думаю в MQL5 этому будет  положен конец.

Причина обращения: