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

 
denkir:

Наверное только после Ваху :-)

abolk, а ну замочите эту школяру парой строк :-))

Скромное имхо, я бы свичем прошёлся по телу функции...

Опять я?

Switch + return в каждый кейс в данном случае было бы оптимально. 

 
А есть ли жизнь на Марсе?
 

Я не профи но думаю что это не плохой вариант:

string TFtoString(const int tf)
  {
   string TF=NULL;
   switch(tf)
     {
      case 1:    TF="M1"; break;
      case 5:    TF="M5"; break;
      case 15:   TF="M15";break;
      case 30:   TF="M30";break;
      case 60:   TF="H1"; break;
      case 240:  TF="H4"; break;
      case 1440: TF="D1"; break;
      case 10080:TF="W1"; break;
      case 43200:TF="MN1";break;
      default:   TF="Unknown period";
     }
   return(TF);
  }
 
Integer:
А есть ли жизнь на Марсе?
Есть и очень скромная от своей скромности, аж спряталась.
 

Компилятор и это выдержал не знаю на сколько это правильно, но думаю что не очень:

string TFtoString(const int tf)
  {
   switch(tf)
     {
      case 1:    return "M1"; 
      case 5:    return "M5";
      case 15:   return "M15";
      case 30:   return "M30";
      case 60:   return "H1"; 
      case 240:  return "H4"; 
      case 1440: return "D1";
      case 10080:return "W1"; 
      case 43200:return "MN1";
      default:   return "Unknown period";
     }
   return "Unknown period";
  }
 
VOLDEMAR:

Я не профи но думаю что это не плохой вариант:

Из каждого case можно сразу делать return. И строку лучше инициализировать не NULL
 
VOLDEMAR:

Я не профи но думаю что это не плохой вариант:

Вариант не плохой, законченный.
 
VOLDEMAR:

Компилятор и это выдержал не знаю на сколько это правильно, но думаю что не очень:

Я бы вот так и оставил

 

string TFtoString(int tf)
  {
   switch(tf)
     {
      case 1:    return "M1"; 
      case 5:    return "M5";
      case 15:   return "M15";
      case 30:   return "M30";
      case 60:   return "H1"; 
      case 240:  return "H4"; 
      case 1440: return "D1";
      case 10080:return "W1"; 
      case 43200:return "MN1";
      default:   return "Unknown period";
     }
   return "Unknown period";

Ну что, давайте может еще что улучшим, раз пошла такая пьянка? 

 
Wahoo:

Опять я?

Switch + return в каждый кейс в данном случае было бы оптимально. 

denkir:

Наверное только после Ваху :-)

abolk, а ну замочите эту школяру парой строк :-))

Скромное имхо, я бы свичем прошёлся по телу функции...

 Не нужен здесь switch. Да и вообще функция явно избыточна, т.к. достаточно ее заменить на EnumToString. Но если уж она нужна, я бы написал что-то типа такого:

//+------------------------------------------------------------------+
//| Возвращает строковое представление переданного таймфрейма.       |
//| В случае неудачи возвращает NULL.                                |
//| INPUT:                                                           |
//|     timeframe - Таймфрейм, строковое значение которого           |
//|                 необходимо получить. Может принимать одно из     |
//|                 значений перечисления ENUM_TIMEFRAMES.           |
//| RESULT:                                                          |
//|     Строковое представление таймфрейма. NULL в случае неудачи.   |
//+------------------------------------------------------------------+
string PeriodToString(ENUM_TIMEFRAMES timeframe)
{
   string results[];
   if(!ArrayResize(results, 2))
      return NULL;
   StringSplit(EnumToString(timeframe), '_', results);
   return results[ArraySize(results)-1];
}

Первый (уже третий) вызвался к расстрельной стенке, кхе-кхе:)))

 
C-4:

 У него нет времени на изучение EnumToString

EnumToString успешно изучен. Речь идет о коде для МТ4 примерно 2х летней давности. Там тогда enumов не было. Да и сейчас то что возвращает функция EnumToString (типа PERIOD_M1) отличается от того что нужно было и что получается в исследуемом примере. Без дополнительной обертки для получения идентичного результата не обойтись.
Причина обращения: