저는 엉망이기 때문에 제 코드의 리팩토에 머리를 쓰고 있습니다. 어제부터에있어 이후 하지만, 내 머리는 돌 -_- "Refacto, algo/logic issues
#region DateTime foreach Currencies
static DateTime eurusd = DateTime.Now.AddHours(-1);
static DateTime eurgbp = DateTime.Now.AddHours(-1);
static DateTime eurjpy = DateTime.Now.AddHours(-1);
static DateTime usdjpy = DateTime.Now.AddHours(-1);
static DateTime gbpjpy = DateTime.Now.AddHours(-1);
static DateTime gbpusd = DateTime.Now.AddHours(-1);
static DateTime eurusdm1 = DateTime.Now.AddHours(-1);
static DateTime eurgbpm1 = DateTime.Now.AddHours(-1);
static DateTime eurjpym1 = DateTime.Now.AddHours(-1);
static DateTime usdjpym1 = DateTime.Now.AddHours(-1);
static DateTime gbpjpym1 = DateTime.Now.AddHours(-1);
static DateTime gbpusdm1 = DateTime.Now.AddHours(-1);
static DateTime eurusdh1 = DateTime.Now.AddHours(-1);
static DateTime eurgbph1 = DateTime.Now.AddHours(-1);
static DateTime eurjpyh1 = DateTime.Now.AddHours(-1);
static DateTime usdjpyh1 = DateTime.Now.AddHours(-1);
static DateTime gbpjpyh1 = DateTime.Now.AddHours(-1);
static DateTime gbpusdh1 = DateTime.Now.AddHours(-1);
static DateTime eurusdd1 = DateTime.Now.AddHours(-1);
static DateTime eurgbpd1 = DateTime.Now.AddHours(-1);
static DateTime eurjpyd1 = DateTime.Now.AddHours(-1);
static DateTime usdjpyd1 = DateTime.Now.AddHours(-1);
static DateTime gbpjpyd1 = DateTime.Now.AddHours(-1);
static DateTime gbpusdd1 = DateTime.Now.AddHours(-1);
#endregion
24 다른 날짜 시간이있다처럼 보인다.
switch (data.Instrument)
{
case "EUR/USD":
if (CanUpdate(ref eurusd, "s5"))
{ InsertData("eurusd", data); }
if (CanUpdate(ref eurusdm1, "m1"))
{ InsertData("eurusdm1", data);}
if (CanUpdate(ref eurusdh1, "h1"))
{ InsertData("eurusdh1", data);}
if (CanUpdate(ref eurusdd1, "d1"))
{ InsertData("eurusdd1", data);}
}
스위치 케이스 6 케이스 (등 위의 하나) 은 (InsertData 그냥 컬렉션의 일부 개체를 넣어. "X"=> 컬렉션 이름, 데이터 => 객체)
private bool CanUpdate(ref DateTime date, string timer)
{
TimeSpan result = DateTime.Now - date;
if (timer == "s5")
{
int difSeconds = result.Seconds;
if (difSeconds >= 5)
{
date = DateTime.Now;
return true;
}
}
if (timer == "m1")
{
int difMinutes = result.Minutes;
if (difMinutes >= 1)
{
date = DateTime.Now;
return true;
}
}
if (timer == "h1")
{
int difHour = result.Hours;
if (difHour >= 1)
{
date = DateTime.Now;
return true;
}
}
if (timer == "d1")
{
int difDays = result.Days;
if (difDays >= 1)
{
date = DateTime.Now;
return true;
}
}
return false;
}
내 "CanUpdate"방법. 패 사이의 시간을 확인 ast 업데이트 및 "if 조건"이 참이면 "날짜 변수"를 업데이트하고 true를 반환하고 그렇지 않으면 false를 반환합니다.
짐작할 수 있듯이이 스위치 케이스에는 70 줄 정도의 선이 있습니다. 하나의 변경 사항은 전체 스위치 케이스에서 재확인해야합니다. 못생긴가?
이 스위치 케이스를 제거하고 유지 관리하기 쉽도록하고 싶습니다. 나는 모든 데이터를 다른 목록에 넣는 것을 생각해 보았다. 다음에 대한 중첩 된 2 할
List<String> collectionName;
List<DateTime> dateTime;
List<String> timeFrame;
과 날짜 시간 컬렉션 foreach 문을 수행 은 그래서 같이 표시됩니다. 뭔가를해야만처럼 :
foreach (DateTime dt in dateTime)
{
for(i=0; i <= collectionName.Lenght; i++)
{
for(j=0; j <= timeFrame.Lenght; j++)
{
CanUpdate(ref dt, timeFrame[j])
InsertData(collectionName[i].ToString(), data)
}
}
}
올바른 방향으로 I를 오전 당신도 내가 좋아하는 것이 무엇인지 이해한다. 왜냐하면 당신 머리가 이걸 읽은 후 내 상태와 같은 상태에 있기 때문입니다. 죄송합니다 : O
당신은 환영합니다 :) –