Как оптимизировать код? Здравствуйте.
Снова о теме быдлокодерства. Меня напрягает if в if, которые в другом if и так далее. Пожалуйста, подскажите, как оптимизировать следующий код? Раковский ли он?if (!string.IsNullOrEmpty(searchByName))
{
string[] names = searchByName.Split(' ');
if (names.Count() > 1)
{
var query = (
from i in MongoDBInstance.GetMongoDatabase.GetCollection("UserInfo").AsQueryable()
where
i.IsActivated == false && ((
i.Name.ToUpper().Contains(names[0].ToUpper()) &&
i.LastName.ToUpper().Contains(names[1].ToUpper())) ||
(i.Name.ToUpper().Contains(names[1].ToUpper()) &&
i.LastName.ToUpper().Contains(names[0].ToUpper())))
orderby i.ID
select i);
if (query.Count() > 0)
{
ViewData["uncheckedProfiles"] = query.ToPagedList(pageNumber, pageSize);
}
else
{
ViewData["uncheckedProfilesSearch"] = "NoResult";
}
}
else
{
var query = (
from i in MongoDBInstance.GetMongoDatabase.GetCollection("UserInfo").AsQueryable()
where
i.IsActivated == false && (
i.Name.ToUpper().Contains(searchByName.ToUpper()) ||
i.LastName.ToUpper().Contains(searchByName.ToUpper()))
orderby i.ID
select i);
if (query.Count() > 0)
{
ViewData["uncheckedProfiles"] = query.ToPagedList(pageNumber, pageSize);
}
else
{
ViewData["uncheckedProfilesSearch"] = "NoResult";
}
}
}
else
{
var query = (
from i in MongoDBInstance.GetMongoDatabase.GetCollection("UserInfo").AsQueryable()
where i.IsActivated == false
orderby i.ID
select i);
if (query.Count() > 0)
{
ViewData["uncheckedProfiles"] = query.ToPagedList(pageNumber, pageSize);
}
else
{
ViewData["uncheckedProfiles"] = null;
}
}

21 Авг 2019 в 07:09
155 +1
0
Ответы
1

Для оптимизации данного кода, можно использовать следующий подход:

Вынести общий код из каждого условия if-else вне условий, чтобы избежать дублирования кода.Использовать LINQ-запросы для более компактного и читаемого кода.Упростить условия внутри LINQ-запросов с использованием методов Any() и ToUpper().Сократить использование ViewState для упрощения дальнейшего кода.

Пример оптимизированного кода:

if (!string.IsNullOrEmpty(searchByName))
{
string[] names = searchByName.Split(' ');
var query = (
from i in MongoDBInstance.GetMongoDatabase.GetCollection<User>("UserInfo").AsQueryable<User>()
where
i.IsActivated == false &&
(names.Count() > 1 ?
(names.Any(n => i.Name.ToUpper().Contains(n.ToUpper())) &&
names.Any(n => i.LastName.ToUpper().Contains(n.ToUpper()))) :
(i.Name.ToUpper().Contains(searchByName.ToUpper()) ||
i.LastName.ToUpper().Contains(searchByName.ToUpper())))
orderby i.ID
select i);
if (query.Any())
{
ViewData["uncheckedProfiles"] = query.ToPagedList(pageNumber, pageSize);
}
else
{
ViewData["uncheckedProfilesSearch"] = "NoResult";
}
}
else
{
var query = (
from i in MongoDBInstance.GetMongoDatabase.GetCollection<User>("UserInfo").AsQueryable<User>()
where i.IsActivated == false
orderby i.ID
select i);
ViewData["uncheckedProfiles"] = query.Any() ? query.ToPagedList(pageNumber, pageSize) : null;
}

Этот код более читаемый, упрощен и избавлен от лишних проверок и дублирования кода.

20 Апр в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 371 автору
Первые отклики появятся уже в течение 10 минут
Прямой эфир