Улучшить код с кучей ветвлений - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток! Есть вариант написания подобной логики без огромного колличества Ifов и без мега switchей?
 if (Stime > DateTime.MinValue || Etime < DateTime.MaxValue)
                        {
                            if (Stime > DateTime.MinValue)
                            {
                                tempA = tempA.Where(u => u.ecm_TimeLine.EventSTime >= Stime);
                                tempB = tempB.Where(u => u.EventETime >= Stime && u.EventType < 4);
                            }
                            if (Etime < DateTime.MaxValue)
                            {
                                tempA = tempA.Where(u => u.ecm_TimeLine.EventSTime <= Etime);
                                tempB = tempB.Where(u => u.EventETime <= Etime && u.EventType < 4);
                            }
                            else
                            {
                                tempA = tempA.Where(u => u.ecm_TimeLine.EventSTime <= DateTime.Now);
                                tempB = tempB.Where(u => u.EventETime <= DateTime.Now && u.EventType < 4);
                            }
                            OnlyDeal = false;
                        }
                        if (EmployeeId > -1)
                        {
                            tempA = tempA.Where(u => u.ecm_TimeLine.EmployeeId_Input == EmployeeId);
                            tempB = tempB.Where(u => u.EmployeeId_Input == EmployeeId && u.EventType < 4);
                            OnlyDeal = false;
                        }
                        if (State == 1)
                        {
                            tempA = tempA.Where(u => !u.ecm_TimeLine.IsRemoved && u.ecm_TimeLine.EventType == 4);
                        }
                        else if (State == 2)
                        {
                            tempA = tempA.Where(u => !u.ecm_TimeLine.IsRemoved && u.ecm_TimeLine.EventType == 5);
                        }
                        else if (State == 3)
                        {
                            tempA = tempA.Where(u => !u.ecm_TimeLine.IsRemoved && (u.ecm_TimeLine.EventType == 4 || u.ecm_TimeLine.EventType == 5));
                        }
                        else if (State == 4)
                        {
                            tempA = tempA.Where(u => !u.ecm_TimeLine.IsRemoved && u.ecm_TimeLine.EventType == 6);
                        }
                        else if (State == 5)
                        {
                            tempA = tempA.Where(u => !u.ecm_TimeLine.IsRemoved && (u.ecm_TimeLine.EventType == 4 || u.ecm_TimeLine.EventType == 6));
                        }
                        else if (State == 6)
                        {
                            tempA = tempA.Where(u => !u.ecm_TimeLine.IsRemoved && (u.ecm_TimeLine.EventType == 5 || u.ecm_TimeLine.EventType == 6));
                        }
                        else if (State == 7)
                        {
                            tempA = tempA.Where(u => !u.ecm_TimeLine.IsRemoved);
                        }
                        if (HasNextContact == 1)
                        {
                            tempB = tempB.Where(u => u.EventSTime > DateTime.Now && u.EventState == 1 && u.EventType < 4);
                        }
                        else if (HasNextContact == 2)
                        {
                            tempB = tempB.Where(u => u.EventSTime <= DateTime.Now && u.EventType < 4);
                        }

Решение задачи: «Улучшить код с кучей ветвлений»

textual
Листинг программы
Data.cs
 
using System;
 
namespace ConsoleApplication1
{
    public class TimeLine
    {
        public DateTime EventSTime { get; set; }
        public int EmployeeId_Input { get; set; }
        public bool IsRemoved { get; set; }
        public int EventType { get; set; }
    }
 
    public class Data
    {
        public TimeLine EcmTimeLine { get; set; }
        public DateTime EventETime { get; set; }
        public int EventType { get; set; }
        public int EmployeeId_Input { get; set; }
        public int EventState { get; set; }
        public DateTime EventSTime { get; set; }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5