Одинаковые куски кода в разных классах допустимо или нубство? Данный кусок кода используется в двух разных классах (MainActivity.java и Response.java):// Подсчет тока по каждому двигателю
private float getCurrent(int engine){
float phasesA = calculatePhaseForEngine(0, MassCurrentsPhases, engine);
float phasesB = calculatePhaseForEngine(1, MassCurrentsPhases, engine);
float phasesC = calculatePhaseForEngine(2, MassCurrentsPhases, engine);
return (phasesA + phasesB + phasesC) / 3;
}
// Подсчетываем ток по выбраному двигателю
private static float calculatePhaseForEngine(int i, float[] MassCurrentsPhases, int currentEng) {
return MassCurrentsPhases[3 * currentEng + i];
}
Также есть и вод такие участки кода в одном классе (Response) используются в цикле:switch (data.length) {
case 96: // Работа со статусом
for (int i = 0, j = 0; i < 27; i++, j += 2) {
FirstByteTmp = (0x000000FF & ((int) data[21 + j]));
SecondByteTmp = (0x000000FF & ((int) data[20 + j]));
ByteTmp = (char) (FirstByteTmp << 8 | SecondByteTmp);
MassCurrentsPhases[i] = round((float) ByteTmp / 100, 2);
}
// .................................
//..................................
case 71: // Ковыряем ответ с длиной в 71 значение
if(data[2] == 0){ // Смотрим 2 значение и если там 0 выполняем код ниже
for (int i = 0, j = 0; i < 30; i++, j += 2) { // Записываем даные в массив
FirstByteTmp = (0x000000FF & ((int) data[5 + j]));
SecondByteTmp = (0x000000FF & ((int) data[4 + j]));
ByteTmp = (char) (FirstByteTmp << 8 | SecondByteTmp);
// .................................
//..................................
} else if(data[2] == 1){ // Смотрим 2 значение и если там 1 выполняем код ниже
for (int i = 0, j = 0; i < 30; i++, j += 2) { // Записываем даные в массив
FirstByteTmp = (0x000000FF & ((int) data[5 + j]));
SecondByteTmp = (0x000000FF & ((int) data[4 + j]));
ByteTmp = (char) (FirstByteTmp << 8 | SecondByteTmp);
Допустимо ли дублирующие участки кода в ООП и можно ли как то эти дубли убрать без лишних костылей ?

21 Авг 2019 в 07:05
179 +1
1
Ответы
1

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

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

В любом случае, решение о том, как избежать дублирования кода, зависит от конкретной ситуации и требует анализа и проектирования кода.

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