Одинаковые куски кода в разных классах допустимо или нубство? Данный кусок кода используется в двух разных классах (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); Допустимо ли дублирующие участки кода в ООП и можно ли как то эти дубли убрать без лишних костылей ?
Дублирование участков кода в разных классах или внутри одного класса не является нубством, но может привести к проблемам в будущем, таким как сложности с поддержкой и изменениями кода. Дублирование кода нарушает принцип DRY (Don't Repeat Yourself) и может привести к ошибкам в случае, если один участок кода изменится, а другой останется нетронутым.
Для устранения дублирования кода в ООП применяются различные подходы, такие как вынос общей логики в отдельный метод или класс, использование наследования и интерфейсов, композиции объектов и т.д. В вашем конкретном случае можно вынести общую логику в отдельный метод или класс и вызывать его из нужных мест, чтобы избежать дублирования кода. Также, если участки кода выполняют разные действия, но похожи по структуре, можно рассмотреть возможность создания более обобщенного метода, который будет принимать параметры и выполнять нужные действия в зависимости от переданных аргументов.
В любом случае, решение о том, как избежать дублирования кода, зависит от конкретной ситуации и требует анализа и проектирования кода.
Дублирование участков кода в разных классах или внутри одного класса не является нубством, но может привести к проблемам в будущем, таким как сложности с поддержкой и изменениями кода. Дублирование кода нарушает принцип DRY (Don't Repeat Yourself) и может привести к ошибкам в случае, если один участок кода изменится, а другой останется нетронутым.
Для устранения дублирования кода в ООП применяются различные подходы, такие как вынос общей логики в отдельный метод или класс, использование наследования и интерфейсов, композиции объектов и т.д.
В вашем конкретном случае можно вынести общую логику в отдельный метод или класс и вызывать его из нужных мест, чтобы избежать дублирования кода.
Также, если участки кода выполняют разные действия, но похожи по структуре, можно рассмотреть возможность создания более обобщенного метода, который будет принимать параметры и выполнять нужные действия в зависимости от переданных аргументов.
В любом случае, решение о том, как избежать дублирования кода, зависит от конкретной ситуации и требует анализа и проектирования кода.