Но на скорость в своей реализации не претендую. Понятно, что строковые функции медленные. Если планируется вызывать функцию 50 миллионов раз - код придется подправить.
Оператор switch быстрее варианта массивами в 10 раз, но при этом по размеру кода больше ... Массивы в топку...
Не нужен здесь switch. Да и вообще функция явно избыточна, т.к. достаточно ее заменить на EnumToString. Но если уж она нужна, я бы написал что-то типа такого:
Первый (уже второй) вызвался к расстрельной стенке, кхе-кхе:)))
В общем, что у нас получается. Тело функции, имеет водные параметры периода. Далее установка массива, потом идет непонятная операция с массивом звучит она буквально так, если не новое значение массива results [] то выход? со значением 0 NULL. Далее основная операция функции, обратим внимание StringSplit(EnumToString(timeframe), '_', results); возвращает извлекаемого значения происходит в никуда, ни в массив, ни в переменную. И завершение return возвращает значение массива который с неизвестным значением в котором снова происходит изменение размера, без значения и что он должен вернуть кроме 0 NULL ничего. Оценка 5 Крутой код теперь понятно почему все мастера такие стеснительные
Alexey: В общем, что у нас получается. Тело функции, имеет водные параметры периода. Далее установка массива, потом идет непонятная операция с массивом звучит она буквально так, если не новое значение массива results [] то выход? со значением 0 NULL. Далее основная операция функции, обратим внимание StringSplit(EnumToString(timeframe), '_', results); возвращает извлекаемого значения происходит в никуда, ни в массив, ни в переменную. И завершение return возвращает значение массива который с неизвестным значением в котором снова происходит изменение размера, без значения и что он должен вернуть кроме 0 NULL ничего. Оценка 5 Крутой код теперь понятно почему все мастера такие стеснительны
Если Вы не поняли код, это не значит что он не работает...
Но на скорость в своей реализации не претендую. Понятно, что строковые функции медленные. Если планируется вызывать функцию 50 миллионов раз - код придется подправить.
Просто у вашего варианта нет никаких преимуществ перед кондовым свичем, а в простоте он сильно проигрывает. Это как раз в тему о хорошем стиле
Wahoo:
Я подредактировал свой пост.
Добавил:
P.S. соответсвующее тем реалиям.
Неужели else и return в тех реалиях тоже отсутствовали?
Alexey: В общем, что у нас получается. Тело функции, имеет водные параметры периода. Далее установка массива, потом идет непонятная операция с массивом звучит она буквально так, если не новое значение массива results [] то выход? со значением 0 NULL. Далее основная операция функции, обратим внимание StringSplit(EnumToString(timeframe), '_', results); возвращает извлекаемого значения происходит в никуда, ни в массив, ни в переменную. И завершение return возвращает значение массива который с неизвестным значением в котором снова происходит изменение размера, без значения и что он должен вернуть кроме 0 NULL ничего. Оценка 5 Крутой код теперь понятно почему все мастера такие стеснительные
Во обще то вы не правы ... StringSplit(EnumToString(timeframe), '_', results); строка разбивается на 2 части так как '_' символ в строке один (PERIOD_M1), затем эти две строки засовываются в массив, и ретурном возвращается ячейка массива под номером 1 то бишь М1 , М5 , М15 , логически ошибки нет ...
Alexey: В общем, что у нас получается. Тело функции, имеет водные параметры периода. Далее установка массива, потом идет непонятная операция с массивом звучит она буквально так, если не новое значение массива results [] то выход? со значением 0 NULL. Далее основная операция функции, обратим внимание StringSplit(EnumToString(timeframe), '_', results); возвращает извлекаемого значения происходит в никуда, ни в массив, ни в переменную. И завершение return возвращает значение массива который с неизвестным значением в котором снова происходит изменение размера, без значения и что он должен вернуть кроме 0 NULL ничего. Оценка 5 Крутой код теперь понятно почему все мастера такие стеснительные
О, ну да. Просто не врубился в код посмотреть:)
Тогда уж GetTickCount вместо TimeLocal.
Но на скорость в своей реализации не претендую. Понятно, что строковые функции медленные. Если планируется вызывать функцию 50 миллионов раз - код придется подправить.
Не нужен здесь switch. Да и вообще функция явно избыточна, т.к. достаточно ее заменить на EnumToString. Но если уж она нужна, я бы написал что-то типа такого:
Первый (уже второй) вызвался к расстрельной стенке, кхе-кхе:)))
В общем, что у нас получается. Тело функции, имеет водные параметры периода. Далее установка массива, потом идет непонятная операция с массивом звучит она буквально так, если не новое значение массива results [] то выход? со значением 0 NULL. Далее основная операция функции, обратим внимание StringSplit(EnumToString(timeframe), '_', results); возвращает извлекаемого значения происходит в никуда, ни в массив, ни в переменную. И завершение return возвращает значение массива который с неизвестным значением в котором снова происходит изменение размера, без значения и что он должен вернуть кроме 0 NULL ничего. Оценка 5 Крутой код теперь понятно почему все мастера такие стеснительны
Если Вы не поняли код, это не значит что он не работает...
Первый (уже третий) вызвался к расстрельной стенке, кхе-кхе:)))
Но на скорость в своей реализации не претендую. Понятно, что строковые функции медленные. Если планируется вызывать функцию 50 миллионов раз - код придется подправить.
Просто у вашего варианта нет никаких преимуществ перед кондовым свичем, а в простоте он сильно проигрывает. Это как раз в тему о хорошем стиле
Я подредактировал свой пост.
Добавил:
Неужели else и return в тех реалиях тоже отсутствовали?
В общем, что у нас получается. Тело функции, имеет водные параметры периода. Далее установка массива, потом идет непонятная операция с массивом звучит она буквально так, если не новое значение массива results [] то выход? со значением 0 NULL. Далее основная операция функции, обратим внимание StringSplit(EnumToString(timeframe), '_', results); возвращает извлекаемого значения происходит в никуда, ни в массив, ни в переменную. И завершение return возвращает значение массива который с неизвестным значением в котором снова происходит изменение размера, без значения и что он должен вернуть кроме 0 NULL ничего. Оценка 5 Крутой код теперь понятно почему все мастера такие стеснительные
Просто у вашего варианта нет никаких преимуществ перед кондовым свичем, а в простоте он сильно проигрывает. Это как раз в тему о хорошем стиле
Неужели else и return в тех реалиях тоже отсутствовали?
В общем, что у нас получается. Тело функции, имеет водные параметры периода. Далее установка массива, потом идет непонятная операция с массивом звучит она буквально так, если не новое значение массива results [] то выход? со значением 0 NULL. Далее основная операция функции, обратим внимание StringSplit(EnumToString(timeframe), '_', results); возвращает извлекаемого значения происходит в никуда, ни в массив, ни в переменную. И завершение return возвращает значение массива который с неизвестным значением в котором снова происходит изменение размера, без значения и что он должен вернуть кроме 0 NULL ничего. Оценка 5 Крутой код теперь понятно почему все мастера такие стеснительные
Тема окупает свой попкорн :)
Предложите полное решение без switch и enum. Его и обсудим.