Данный кусок кода используется в двух разных классах (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);
Допустимо ли дублирующие участки кода в ООП и можно ли как то эти дубли убрать без лишних костылей ?