Перегрузки методов без дублирования кода в C#? Добрый день,
разные перегрузки метода делают почти одно и тоже в зависимости от наличия некоторых аргументов. То есть аргументов может быть 10, а может быть 8. Соответственно 2 перегрузки. Но код работы над этими аргументами на 80% совпадает. Остальное можно развести в if. Причем код не меленький - запросы к БД, вычисления, запись в БД, возврат и др. Строк на 40.
Что вы делаете в таком случае? Дублируете код для разных перегрузок? Разбиваете внутренности метода на отдельные методы и выносите их отдельно, обращаясь к ним в каждой из перегрузок? Так можно тоже наплодить длинных цепочек вызовов.
Заранее спасибо!

21 Авг 2019 в 07:06
187 +1
0
Ответы
1

Для того чтобы избежать дублирования кода при работе с различными перегрузками метода, можно использовать принципы SOLID, в частности принцип DRY (Don't Repeat Yourself).

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

Также можно рассмотреть возможность использования шаблонного метода, где базовый алгоритм будет определен в абстрактном классе, а конкретные шаги будут реализованы в подклассах (перегрузках метода). Это также позволит избежать повторения кода и структурировать его лучше.

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

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