Стайлер в торговом терминале MetaTrader 5 - страница 5

 
Renat :

Господа, а для кого пишется код?


Очень сильно уверен, что для остальных программистов. А им очень и очень неприятно читать чужой неотформатированный код.


Именно для решения такой проблемы мы и сделали штатную функцию стайлера. Если хотите, чтобы остальные люди (не Вы, а именно остальные люди) захотели смотреть Ваш код, то лучше его привести в максимально простой и однозначный вариант. Причем ключевое слово тут "люди", а не "вы".


Ренат, а для кого писался стайлер?


Очень сильно уверен, что для остальных пользователей. А им очень и очень неприятно читать отформатированный в чужом стиле код.


Именно для решения такой проблемы мы и предлагаем расширить штатные функции стайлера. Если хотите, чтобы остальные люди (не Вы, а именно остальные люди) захотели использовать Ваш стайлер, то лучше его привести в максимально удобный и настраиваемый вариант. Причем ключевое слово тут "люди", а не "вы".



Программисты пишут код не для себя, хотя ошибочно думают, что для себя. Знакомо ведь?



ps: отмазка про CodeBase вообще нелепая, при чем здесь встроенный в эдитор стайлер?...

 
komposter :

ps: отмазка про CodeBase вообще нелепая, при чем здесь встроенный в эдитор стайлер?...

Когда Вы сами будете собирать, вести и оплачивать Code Base, вопрос сразу отпадет. Или Вы думаете, что все вокруг само собой бесплатно делается?


Сейчас все разговоры только о принципиальной позиции "это плохо только потому, что не настраивается".


Давайте перейдем к конкретным пунктам - укажите какой пункт и почему неправильно делается стайлером.

 
Renat :

Сейчас все разговоры только о принципиальной позиции "это плохо только потому, что не настраивается".

Не согласен.

У меня, к примеру позиция следующая -- "то, что есть не устраивает т.к. не соответствует общепринятым стандартам кодирования. пока не устраивает, пользоваться не буду, когда устроит, пользоваться буду. Средства достижения результата "устраивает" большой роли не играют".


Принципиальная позиция как раз у Вас, причем далеко не только по этому вопросу.

И прислушиваться к чужим доводам Вы категорически не желаете, даже при том, что доводы вполне обоснованы и рациональны.

Давайте перейдем к конкретным пунктам - укажите какой пункт и почему неправильно делается стайлером.

Стайлером все делается правильно. Но результат желаемому(приемлемому) не соответствует.
 
TheXpert :

Не согласен.

У меня, к примеру позиция следующая -- "то, что есть не устраивает т.к. не соответствует общепринятым стандартам кодирования. пока не устраивает, пользоваться не буду, когда устроит, пользоваться буду. Средства достижения результата "устраивает" большой роли не играют".


Принципиальная позиция как раз у Вас, причем далеко не только по этому вопросу.

И прислушиваться к чужим доводам Вы категорически не желаете, даже при том, что доводы вполне обоснованы и рациональны.

Стайлером все делается правильно. Но результат желаемому(приемлемому) не соответствует.

+1. По всем пунктам.

Для того чтобы вернуться на стандартные стили нужно только решение. Они просто не хотят признать ошибки по принятию когда-то в прошлом кривого стиля.

 
marketeer :

+1. По всем пунктам.

Для того чтобы вернуться на стандартные стили нужно только решение. Они просто не хотят признать ошибки по принятию когда-то в прошлом кривого стиля.


не согласен с "кривизной".

Им так "вкуснее" и "ярче"... Не спорьте об этом.

А о настройках,  говорят же - вернёмся к теме позже

;)

 
Sorento :


не согласен с "кривизной".

Им так "вкуснее" и "ярче"... Не спорьте об этом.

А о настройках,  говорят же - вернёмся к теме позже

;)

Что значит не согласен? Есть стандарты де-факто, с которыми нельзя быть несогласным, им нужно только следовать. Им же не пришло в голову генерить репорты в своем собственном HTML-е с подвыподвертом - сделали именно в стандартном. Со стилем то же самое. Программирование - это общемировая индустрия, стили определены, и МетаКвоты не могут идти против массы с подобным "новшеством".

 

Укажите, пожалуйста, какой пункт и почему неправильно делается стайлером.


Желательно с демонстрацией форматированных кусков кода.

 
Renat :

Укажите, пожалуйста, какой пункт и почему неправильно делается стайлером.

Желательно с демонстрацией форматированных кусков кода.

https://www.mql5.com/ru/forum/122145, только там табуляции маленькие -- 2 символа, но это не так принципиально, хотя нормально это 3-4.

Демонстрация в первом же посте. Там запятой нет, надо так, как в этом предложении.


Если Вы всерьез, могу привести выдержки из нашего корпоративного соглашения по стилю.

Вот это стиль! :) - MQL4 форум
  • www.mql5.com
Вот это стиль! :) - MQL4 форум
 
Renat :

Укажите, пожалуйста, какой пункт и почему неправильно делается стайлером.

Желательно с демонстрацией форматированных кусков кода.


Ренат, это уже неспортивно ;)

MQL - это ВАШ язык, стандарта на него нет, поэтому вы вправе устанавливать СВОИ стандарты. И мы вам ничего не докажем.

Но MQL - это C-подобный язык. А у С есть несколько общепринятых стандартов. Вот они тут есть: https://en.wikipedia.org/wiki/Indent_style

Я лично предпочитаю Allman style (bsd in Emacs)

The style puts the brace associated with a control statement on the next line, indented to the same level as the control statement. Statements within the braces are indented to the next level.

while (x == y)
{
something();
somethingelse();
}
finalthing();


Мне кажется что проблема защиты вами собственной точки зрения абсолютно надумана. Вы хотите видеть свои тексты отформатированными так - пожалуйста! Но есть другие люди которые хотят видеть его отформатированным по другому. Эти люди (не имея доступа к телу) просят вас учесть их потребности и сделать настройки форматеру чтобы можно было форматировать и по вашему и по ихнему. Сделать можете только вы - разработчики. К вам и обращаемся с просьбой. Вы либо идете нам на встречу, либо посылаете всех к своему стандарту. Выберите ваш вариант и озвучьте его.

Indent style - Wikipedia, the free encyclopedia
  • en.wikipedia.org
Indentation is not a requirement of most programming languages, where it is used as secondary notation. Rather, programmers indent to better convey the structure of their programs to human readers. In particular, indentation is used to show the relationship between control flow constructs such as conditions or loops and code contained within...
 

Буквально пару абзацев добавлю, почему считаю этот вопрос важным и почему считаю Allman style (bsd in Emacs) самым правильным. Давайте забудем на время кто к чему привык и обратимся к голой логике.

Зачем нужно форматирование текста? Для того, чтобы этим самым форматированием выделять и разделять в нем отдельные логические блоки.


Давайте посмотрим на обычный while. У него есть два логически обособленых блока: "заголовок" цикла и тело цикла. Чтобы их не смешивать их нужно размещать на разных строках. По этой причине открывающая скобка в той же строке что while (у меня лично) вызывает недоумение (все равно как человек наполовину зашел в комнату - все тело в комнате а голова еще "осталась" за дверьми).


Теперь второй вопрос вдвинуть скобки внутрь или нет? В принципе, скобки не относятся напрямую к заголовку и скорее являются частью тела цикла. Однако вдвигать внутрь нужно только исполняемые команды, т.е. то, в чем есть своя обособленная логика. Но есть как минимум один здравый пример цикла без тела:

while ( TradingServerNotAvailable() )
{
}

Нам просто нечего делать пока торговый сервер не доступен - поэтому мы ничего и не делаем и тело цикла пустое. В этом случае вдвинутые внутрь скобки выглядят (с моей точки зрения) - странновато: вправо сдвинута и выделена пустота.

Когда же у цикла появляется тело - оно сдвигается вправо и место слева освобождается для поиска пар закрывающих скобок:

while ( TradingServerNotAvailable() )
{
Sleep ( 1000 );
}

Это еще одна причина по которой открывающую скобку негоже бросать в той же строке что и заголовок цикла - там ее труднее найти когда глазами ищеш закрывающую\отркрывающую скобку. В моем варианте четко видно скобка в этой позиции и парная ей в другой строке но в той же позиции. К тому же строка с одной единственной скобкой (даже без коментариев!) служит дополнительным визуальным элементом, выделяющим и отделяющим внутренний блок от внешнего.


Как видите: ничего личного - просто логика визуального восприятия текста!


И вот с точки зрения этой логики (а не личных предпочтений и привычек) мне и непонятен\неприятен текст в нынешнем форматировании стайлера:

// чего вдавлен внутрь кусок кода - в котором кода нет и выделять там нечего
while ( TradingServerNotAvailable() )
{
}
// каждый отступ вправо ассоциируется с новым уровнем вложенности, а здесь визуально ТРИ уровня!
while ( TradingServerNotAvailable() ) // первый уровень
  { // второй уровень
   Sleep(1000); // третий уровень
  }

А if в GNU-сном написании это просто каша какаято

if ( TradingServerNotAvailable() ) {
  ....
} else { // вот тут в одной строке ТРИ элемента разных блоков: закрытие предыдущего, разделитель, начало следующего :(((
  ....
}

и как определить не потеряли ли вы открывающие скобки и не поставили ли лишнюю закрывающую? Толи дело вот так:

if ( TradingServerNotAvailable() ) 
{
  ....
}
else
{
  ....
}
еще раз повторюсь: дело не в личных моих привычках и еще в чем то - просто логика визуального восприятия текста!
Indent style - Wikipedia, the free encyclopedia
  • en.wikipedia.org
Indentation is not a requirement of most programming languages, where it is used as secondary notation. Rather, programmers indent to better convey the structure of their programs to human readers. In particular, indentation is used to show the relationship between control flow constructs such as conditions or loops and code contained within...