Любой альтернативный способ рефакторинга кода для повышения производительности - PullRequest
0 голосов
/ 05 октября 2018

Рефакторинг кода для повышения производительности

У меня есть список всех отделов, которые извлекаются из базы данных Теперь я хочу получить все подходящие отделы из списка отделов на основе некоторых критериев

Нижеэто код, который будет зацикливаться для каждого отдела, а случай переключения используется для проверки соответствия критериям, а затем добавить этот отдел в список подходящих отделов

        List<EligibleDepartments> eligibleDepartments = new List<EligibleDepartments>();

        //use the following boolean values for eliminating common logic execution again and again
        bool IsCriteriaForABCDMatchSet = false;
        bool IsCriteriaForEFMatchSet = false;

        foreach (var department in departmentTypes) // here departmentTypes is the list of departments fetched from database
        {
            switch (department.DepartmentTypeId)
            {
                // here DepartmentTypes is the enum 
                case (int)DepartmentTypes.DepartmentA: 
                case (int)DepartmentTypes.DepartmentB:
                case (int)DepartmentTypes.DepartmentC:
                case (int)DepartmentTypes.DepartmentD:                   
                    if (IsCriteriaForABCDMatchSet || IsCriteriaForABCDMatches(students))
                    {
                        eligibleDepartments.Add(department);
                        IsCriteriaForABCDMatchSet = true;
                    }
                    break;
                case (int)DepartmentTypes.DepartmentE:
                case (int)DepartmentTypes.DepartmentF:
                    if (IsCriteriaForEFMatchesSet || IsCriteriaForEFMatches(students))
                    {
                        eligibleDepartments.Add(department);
                        IsCriteriaForEFMatchSet = true;
                    }
                    break;
                case (int)DepartmentTypes.DepartmentG:
                    if (IsCriteriaForGMatches(students))
                    {
                        eligibleDepartments.Add(department);
                    }
                    break;
                case (int)DepartmentTypes.DepartmentH:
                    if (IsCriteriaForIMatches(students))
                    {
                        eligibleDepartments.Add(department);
                    }
                    break;
                case (int)DepartmentTypes.DepartmentI:
                    if (IsCriteriaForIMatches(students))
                    {
                        eligibleDepartments.Add(department);
                    }
                    break;
                case (int)DepartmentTypes.DepartmentJ:
                    if (IsCriteriaForJMatches(students))
                    {
                        eligibleDepartments.Add(department);
                    }
                    break;
                case (int)DepartmentTypes.DepartmentK:
                    if (IsCriteriaForKMatches(students))
                    {
                        eligibleDepartments.Add(department);
                    }
                    break;
            }
        }

Но почему-то я чувствую, что этот код замедлит работу.Есть ли альтернативный способ рефакторинга этого кода и избежать использования регистра переключателя здесь.Любая помощь будет оценена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...