![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Где в MQL4 классы, С-4? Да и вроде разработчики сказали, что пока наследования в пятере не будет.
Где в MQL4 классы, С-4? Да и вроде разработчики сказали, что пока наследования в пятере не будет.
Уже есть, со всеми сопутствующими прелестями. И это можно увидеть даже в Тетрисе (в исходниках mq5).
Ух интересно-то как. Три месяца как уже опубликована игрушка, а узнал только что...
Ух интересно-то как. Три месяца как уже опубликована игрушка, а узнал только что...
я кажется чтото пропустил....
в чем смысл восклицания "ух-ты"? разьве гдето есть МТ5 что бы потестить исходники?!!! если есть - не сочтите за труд дать ссылочку на скачку.
Ну нет, МТ5 еще не видно (простым смертным), но хоть на код глянуть можно. Примерно понятно, что можно ожидать.
а не подскажет ли кто прожку которая сумеет распарсить MQL-исходник и в каком то виде выдать имена используемых переменных\функций и количество их "упоминаний" в тексте?
например чтобы можно было отловить остатки неиспользуемых больше переменных от выброшенных текстов, и для того чтобы случайно не переименовать какоето сильно сокращенное имя в более длинное и понятное, которе окажется уже использованым именем глобальной переменной про которую ты уже давно забыл что она есть гдето в коде.
предпочитаю
if ( a > c )
codret = 3;
if ( l < b )
codret = 5;
...
...
if ( h != b )
codret = 100;
// особенно если перед return делаются некие дополнительные общие для всех выходов действия
... например тут занимаемся еще чем то
retrun( codret);
}
Вы как раз показали яркий пример того, почему я использую множественные выходы return. В Вашем примере функция вернет последнее сработавшее if(), а не первое. В моем примере функция вернет первое совпадение. В практие я часто сталкивался с тем, что необходимо возвращать именно первое удовлетворяющее условию значение, и почти никогда мне не приходилось возвращать последнюю сработавшую проверку. В этом примере наличие одного return, вовсе не упрощает отслежывание значений возвращаемых функцией, скорее наоборот,от одного return можно ожидать всего что угодно.
И кстати, лично я не люблю отделять важный знак ";" от выражения:
extern double max_price[100] ; //Хранит цены максимумов последних ста баров
extern double max_price[100] ; //Хранит цены максимумов последних ста баров - Я пишу только так
Нет, тут мы говорим просто о стиле. Кстати, в некоторых случаях я совсем не против goto.
Зачем нужно объявлять функцию в функции? Лично, мне как выросшему исключительно на Си, Си++ непонятен этот прием.
Инкапсуляция... Когда пишешь шаблоны и хочешь спрятать очень локальную функцию или функтор или класс, очень даже полезно.
А чаще всего можно обойтись безымянным пространством имен.
2. Ненавижу очень распрастранненый стиль ставить фигурные скобки таким образом:
Очень зря. Рассадник разных ляпов со скобками. Раньше то оправданием была экономия места и правило размера кода функций.
А сейчас в век терабайтных веников чего места жалеть?
5. Использую функции в функции:
Неэффективно (при нескольких вызовах одной), размазанно и длинно. Тем паче один из UB, рассадник злостных нетривиальных ошибок.
Далее -- насчет копипастов. Очень засадная фигня :). Каюсь пользую и часто из-за него допускаю ошибки. Пример? забыл переименовать переменную, поменять коммент, да мало ли что.
Поэтому ревью кода оч. полезная вещь.
Насчет Паскаля :) . До сих пор главный олимпиадный язык. По одной простой причине -- мало ключевых слов, логическая стройность.
Долго не верил, что Паскаль (вернее Делфи) хуже С++, пока не узнал С++ лучше.
Сейчас считаю, что Паскаль лучше одним: на нем сложнее написать быдлокод.
Далее -- насчет комментов -- да фигня все это, особенно про 30%.
Пишите самодокументируемый код и будет вам щасте. В виду отсутствия классов, на MQL4 это сделать сложновато. Но с классами должно стать полегче.
Все остальное -- отступы, принципы именования, выравнивания -- не более чем рекомендации.
Кстати насчет функций. А какой шрифт должен быть? А что если на строчку больше? Главное, чтобы понятно было, ч в ней делаеццо, остальное лишь рекомендации.
Самое главное сделать код максимально понятным для тех, кто его возможно будет сопровождать.