Какой CodeStyle вы используете при написании (форматировании) кода MQL4/5 для себя, любимого? - страница 4

 
Konstantin Nikitin:

Примерно то-же самое, привык с C#/C++ к такому оформления. Нравиться когда глаз сразу видит отдельные участки не то что функций, а поэтапное выполнение в самих функциях.


+++

И при работе в отладчике в пошаговом режиме удобнее и нагляднее, чем когда строка длиной в километр и там 100500 функций и прочего впихнуто.

 
Alexey Volchanskiy:

Жорж, MFC разрабатывался очень давно, с тех пор и мониторы стали больше и кодестайл немного поменялся. Я привел примерчик для C# 7.0

Дык я ж закостенелый старпер. В том коде и остался. Мониторы - и правда, сейчас больше - и это позволяет открывать сразу два окна.

Но, от вышеприведенного примера - мой код не сильно отличается. В основном мелкой косметикой. Названия классов - с C, структур с S, перечислений с Е... Скобки - обычно идут с отступом, как у блока... Строгая вегнерская нотация переменных...

 
Alexey Volchanskiy:

Это кодестайл, принятый у них на фирме.

там большинство пунктов шарпоспецифичное
 

Стараюсь писать максимально компактно. Скобки как в Java - первую на новую строку не переносить. Получается так:

for(;;){

}

 
Alexey Oreshkin:

Стараюсь писать максимально компактно. Скобки как в Java - первую на новую строку не переносить. Получается так:

for(;;){

}

Да, таким образом блок зрительно всегда максимально отделён от остальных блоков

 
Vitaly Muzichenko:

Да, таким образом блок зрительно всегда максимально отделён от остальных блоков

Все-таки, это дело привычки. Мне, например, тяжело увидеть такой блок, т. к. его начало скрыто в конце какой-то, неизвестной мне, строки. На мой взгляд, удобнее выглядит, когда открывающая и закрывающая скобки находятся на одном уровне. Да, теряется одна строка. Но это, наверное, единственный минус.
 
Ihor Herasko:
Все-таки, это дело привычки. Мне, например, тяжело увидеть такой блок, т. к. его начало скрыто в конце какой-то, неизвестной мне, строки. На мой взгляд, удобнее выглядит, когда открывающая и закрывающая скобки находятся на одном уровне. Да, теряется одна строка. Но это, наверное, единственный минус.

Если закрывающую скобку поставить под оператор, то сразу видно откуда эта скобка - просто взгляд упирается в нужный оператор:

for(;;){
   // код 
   }
 
Artyom Trishkin:

Если закрывающую скобку поставить под оператор, то сразу видно откуда эта скобка - просто взгляд упирается в нужный оператор:


По-моему, этот вариант еще хуже того, который предложен Алексеем. У него хоть скобка на начале строки оператора. А здесь - вообще посередине строки. Проблема усугублена.

 
Ihor Herasko:

По-моему, этот вариант еще хуже того, который предложен Алексеем. У него хоть скобка на начале строки оператора. А здесь - вообще посередине строки. Проблема усугублена.

Это в контексте той мизерной козявки, которую мы дружно нарисовали.

А вот кусок из портянки - всё чётко и сразу в глаза цепляется:

      if(ticket<=0){
         //--- Звук ошибки
         if(CTrades::Sounds()) CTrades::PlaySoundError();
         //--- Код ошибки
         if(CTrades::m_error_code==RETCODE_EXPERT_TRADE_DISABLED){
            if(CTrades::LogLevel()>LOG_LEVEL_NO) 
               ::Print(FUNC,TextByLanguage("Отключена авто-торговля в настройках советника (F7 --> Общие --> Чекбокс \"Разрешить советнику торговать\")","Auto-trade disabled in Advisor settings (F7 -> Common -> Checkbox \"Allow live trading \")"));
            return false;
            }
         //--- Метод обработки кода ошибки
         int method=this.CheckRetCode(CTrades::m_error_code);
         //--- Отключение торговли
         if(method==METHOD_TRADE_DISABLE){
            this.IsTradeGlobalDisabled(true);
            return false;
            }
         //--- Прерывание цикла
         if(method==METHOD_BREAK){
            return false;
            }
         //--- Ожидание
         if(method>METHOD_BREAK){
            ::Sleep(method);
            this.symbol.RefreshRates();
            continue;
            }
         //--- Обновление и повтор
         if(method==METHOD_REFRESH){
            this.symbol.RefreshRates();
            continue;
            }
         //--- Корректировка и повтор
         if(method==METHOD_CORRECT){
            this.symbol.RefreshRates();
            sl=CTrades::CorrectStopLoss(ORDER_TYPE_SELL,0,sl);
            tp=CTrades::CorrectTakeProfit(ORDER_TYPE_SELL,0,tp);
            continue;
            }
         }
      else{
         if(CTrades::Sounds()) CTrades::PlaySoundSuccess();
         break;
         }
 
Artyom Trishkin:

Это в контексте той мизерной козявки, которую мы дружно нарисовали.

А вот кусок из портянки - всё чётко и сразу в глаза цепляется:

Мне не нравится этот стиль, ну совсем не читабельно из-за расстановки скобок, и самого "else"