Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
1 / 1 / 0
Регистрация: 22.10.2013
Сообщений: 68

Как можно сократить объём кода?

02.03.2020, 09:45. Показов 791. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как можно сократить объём кода?
Интуитивно кажется, что участок с "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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.03.2020, 09:45
Ответы с готовыми решениями:

Как сократить объём кода?
var list1 = new List&lt;SelectListItem&gt;(); var listAP = uow.GetRepository&lt;Subject&gt;().All().Where(x =&gt; x.ID &gt; 300); // этой строчкой берём...

Как сократить размер кода?
понимаю код ужас. Помогите его правильно уменьшить, а то я одно и тоже могу писать километрами public partial class Form1 : Form ...

Как можно сократить данный код?
Как можно сократить данный код? ( Программа выводит 10 рандомных чисел: 3 в промежутке от 10-30, 3 от 30-60, и последние 4 от 60-100 ...

1
 Аватар для Bampo
114 / 82 / 37
Регистрация: 15.02.2020
Сообщений: 206
02.03.2020, 10:52
Solomka, у тебя тут случай, когда ты хочешь статическую типизацию заменить на динамическое приведение типов в рантайм, к тому же с завязкой на Linq.
Кроме как влезать в болото Expression Trees и Reflection не вижу варианта. Но, имхо, лучше так, как есть сейчас - и проще и быстрее.

Хотя можно If else заменить на Сопоставление с образцом в блоках case.
Типа:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static int Count<T>(this IEnumerable<T> e)
{
    switch (e)
    {
        case ICollection<T> c: return c.Count;
        case IReadOnlyCollection<T> c: return c.Count;
        // Matches concurrent collections
        case IProducerConsumerCollection<T> pc: return pc.Count;
        // Matches if e is not null
        case IEnumerable<T> _: return e.Count();
        // Default case is handled when e is null
        default: return 0;
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.03.2020, 10:52
Помогаю со студенческими работами здесь

С# - Можно ли как-то сократить .Invoke(new Action() => .?
Здравствуйте, Можно ли как-нибудь сократить вызов .Invoke? Так как при необходимости выполнить множество действий в другом потоке...

Как можно сократить и упростить данный код
Всем привет! Появилась отличная идея сделать консольную игру типа 2D головоломки. Создал дизайн первого уровня и тут же наткнулся на...

Можно как-то сократить код с switch case?
Можно как-то сократить следующий код с switch case? switch (labelFileSaved.Text) { case...

Как уменьшить объём кода?
int listIdClassGroupsForAllowToUser=...; Душа просит написать вот так: var temp1 =...

Можно ли как-то сократить код? Различаются только вызовом разных методов в теле
private void BtnSelectionSort_Click(object sender, EventArgs e) { ResetParametersAndCreateList(); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru