Нужна ли независимая проверка продуктов Фриланса? - страница 28

 
VOLDEMAR:

Я правильно Вас понял ?

Не надо так писать.
 
C-4:
Не надо так писать.
Почему? Аргументы...
 
VOLDEMAR:
Почему? Аргументы...
Код не понятный. В одной строке слишком много преобразований и плясок с индексатором массива.
 
C-4:

Именно так.

Добавлю что вначале массив объявляется безрамерным или динамическим, что бы функция StringSplit в случае необходимости сама определила нужный ей размер.

Затем делается резайц if(!ArrayResize(results,2)) Это тоже не случайно. После удачного ресайца я гарантировано могу обратиться к results[ArraySize(results)-1], т.к. знаю что массив содержит по крайней мере 2 элемента (если делать ArrayResize(results,1) - тоже покатит). Значит лишние проверки уже не нужны.  К томуже функция StringSplit тоже не идиотка, внутри себя она не будет резайцить массив, если его размер подходящий. Более того, на своем уровне я знаю, что скорее всего подэлемента будет два, это "PERIOD" и оставшиеся буквы таймфрема. Я предугадываю конечный размер массива еще на этапе первого резайца, и при граммотной реализации Resize это может сэкономить время.

Есть еще несколько тонкостей. 

Я понял только вот в справке нигде не написано что StringSplit ресайзит массив... Поэтому логично делать ресайз динамического массива заранее... Спс теперь буду знать .

 
C-4:
Код не понятный. В одной строке слишком много преобразований и плясок с индексатором массива.
Для меня более понятный со свичом, но Ваш вариант мне понравился тоже, слегка обфусцированный, и любителям не понять....
 
C-4:
Щаз забацаем реализацию на ассоциативном массиве. Дадим *:;%№*" всем антагонистам Оккамы!

"Мсье знает толк извpащениях" (с)

я тут случайно ночью мимо ноута проходил.... можно и в этом направлении подумать, вот набросал за 10 минут:

#property script_show_inputs
//--- input parameters
input ENUM_TIMEFRAMES tf = PERIOD_W1;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart(){
Print(PeriodToString(tf));
}
//+------------------------------------------------------------------+
string PeriodToString(ENUM_TIMEFRAMES timeframe){
return(0xC000 & tf ?(0xC001 == tf ? "MN1":(0x8001 == tf ?"W1":("H" + (tf&0x1F)))) : "M" + (tf&0x1F));
} 
ЗЫ: с PERIOD_CURRENT лень возиться ночью
 
C-4:
А если ENUM_TIMEFRAME будет содержать тысячу идентификаторов? Будете тысячу строчек case вставлять? А если ENUM_TIMEFRAME решат расширить новым таймфреймом, например так: PERIOD_M45? А если PERIOD_* поменяют на TIMEFRAME_*?  Мой код продолжит работать, это главное. Программирование - это описание частных случаев обобщенным методом.

OFF: а вы случаем не в бронике на улицу выходите? На предмет "а если .."

ON: а если вместо PERIOD_MN1 сделают просто MN1? Или MN_1? Ваш код перестанет работать, если вы сейчас не примете мер :)

Это наверное работа с форексом побуждает гадать про то что будет? OK, я ставлю на то, что PERIOD_M45 не будет, как и ENUM_TIMEFRAME вообще, бо МетаКвоты разрешат терминалу создавать любой ТФ, кратный минуте. Т.е. ТФ будет задаваться беззнаковым целым и все функции преобразования к человекопонятному строковому обозначению придётся писать совсем по-другому. А до тех пор switch останется оптимальным вариантом

 
IgorM:

"Мсье знает толк извpащениях" (с)

я тут случайно ночью мимо ноута проходил.... можно и в этом направлении подумать, вот набросал за 10 минут:

ЗЫ: с PERIOD_CURRENT лень возиться ночью

Ваша Кунгфу сильнее моего (С)

а не могли бы расшифровать логику

return(0xC000 & tf ?(0xC001 == tf ? "MN1":(0x8001 == tf ?"W1":("H" + (tf&0x1F)))) : "M" + (tf&0x1F));
 
IgorM:

"Мсье знает толк извpащениях" (с)

я тут случайно ночью мимо ноута проходил.... можно и в этом направлении подумать, вот набросал за 10 минут:

ЗЫ: с PERIOD_CURRENT лень возиться ночью
Компилятор ругается....
 

ух скока накромсали за ночь!

Имхо, оч.интересная идея от Ваху про proofreading.

Насчёт конкурса, тоже интересно!

Предлагаю первой задачей для конкурса "реализация торгового запроса".