powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как можно сократить объём кода?
8 сообщений из 8, страница 1 из 1
Как можно сократить объём кода?
    #39932874
Solomka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как можно сократить объём кода?
Интуитивно кажется, что участок с "if and else if" можно как то сократить, но не приходит в голову как...

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
//берём значения из БД и преобразуем List<TypeOfDto> 
var getListData = GetAllFromDataBase()
.Select(xx => (TypeOfDto)Activator.CreateInstance(typeof(TypeOfDto), xx));

// узнаём какие интерфейсы реализует класс ДТО
// и если он реализует како-либо, то делать по этому полю сортировку,
// которое реализовано в этом интерфейсе
var listInterfacesFromType = typeof(TypeOfDto).GetInterfaces();

if (listInterfacesFromType.Contains(typeof(IInterface1)))
{
   return getListData.Select(x => ((IInterface1)x)).OrderBy(xx => xx.OrderField1).Select(x => ((TypeOfDto)x)).ToList();
}
else if (listInterfacesFromType.Contains(typeof(IInterface2)))
{
  return getListData.Select(x => ((IInterface2)x)).OrderBy(xx => xx.OrderField2).Select(x => ((TypeOfDto)x)).ToList();
}
...
Рейтинг: 0 / 0
Как можно сократить объём кода?
    #39932897
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можешь попробовать реализовать свой компаратор
Код: c#
1.
IComparable

для IInterface1 и IInterface2- это сократит код в части описывания сортировки.
...
Рейтинг: 0 / 0
Как можно сократить объём кода?
    #39932936
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Solomka,
имхо типичный репозитарий...
...
Рейтинг: 0 / 0
Как можно сократить объём кода?
    #39932945
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
такой код нарушает второй принцип SOLID (принцип открытости\закрытости)
как только появится интерфейс3, вам нужно будет менять код повсеместно, где он применяется.
А что, если класс наследует оба этих интерфейса?
не проще создать интерфейс IOrdered или ему подобный, в котором будет свойство Order или еще чего, которое всегда будет возвращать нужное для упорядочивание значение? или метод в который будет передаваться аргумент, а на основе него будет возвращаться значение для сортировка.
...
Рейтинг: 0 / 0
Как можно сократить объём кода?
    #39932946
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и порядок данный можно определить на уровне базы, тогда не надо будет ничего сортировать вообще, в базе данных в индексах уже всё отсортировано за вас
...
Рейтинг: 0 / 0
Как можно сократить объём кода?
    #39933223
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Solomka
Как можно сократить объём кода?


Какой смысл в этом?
...
Рейтинг: 0 / 0
Как можно сократить объём кода?
    #39933224
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Solomka,

Ваш код итак уже не читаем, даже с комментариями не понятно что за чертовщина происходит.
Когда сократите, это ещё и дебажить будет невозможно.

Судя по всему тут пожизненно в режиме дебага надо сидеть.
...
Рейтинг: 0 / 0
Как можно сократить объём кода?
    #39933455
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дай дураку программисту рефлекшен, он лоб расшибет.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как можно сократить объём кода?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]