сокращение кода .. чтобы функционировать - PullRequest
1 голос
/ 01 марта 2011
public final byte[] getParam(String commandName,String memLocation,String dataId){
    byte[] result = new byte[9];
    result[0] = START_FRAME.getBytes()[0];
    result[1] = START_FRAME.getBytes()[0];
    result[2] = Integer.toHexString(commandMap.get(commandName)).getBytes()[0];
    result[3] = Integer.toHexString(dataIdMap.get(dataId)).getBytes()[0]; 
    result[4] = Integer.toHexString(locationMap.get(memLocation)).getBytes()[0];

    result[5] = Integer.toHexString(commandMap.get(commandName) + dataIdMap.get(dataId) + locationMap.get(memLocation)).getBytes()[0];

    result[6] = END_FRAME.getBytes()[0];
    result[7] = END_FRAME.getBytes()[0];
    result[8] = END_OF_LINE.getBytes()[0];
    //Check sum -> {{d10d}}
    return result;
}

как мне уменьшить результат [5] добавление значений к вызову функции ...

могу я пройти так?

    public static final byte[] createCheckSum(byte[] paramsToBeAdded){
            byte[] result = paramsToBeAdded;
            ............
            ........... etc
    return result[0] + result[2];
}

Правильный ответ:

private String createCheckSum(byte[] byteHolder,int startIndex,int endIndex){
     byte[] byteToCompute = byteHolder;      
     int sum = 0;     
 for(int i=startIndex; i<=endIndex; i++){    
      sum += Integer.valueOf(byteToCompute[i]);     
 }    
 return Integer.toHexString(sum);     
}    

1 Ответ

1 голос
/ 01 марта 2011

Похоже, вы используете некоторые переменные члена класса. В этом случае функция сделает код более читабельным (выберите хорошее имя, которое показывает, что делает метод):

private String computeSomething(String commandName,String memLocation,String dataId) {
  int  commandValue = commandMap.get(commandName);
  int  dataValue    = dataIdMap.get(dataId);
  byte memValue     = locationMap.get(memLocation)).getBytes()[0];
  return Integer.toHexString(commandValue + dataValue + memValue);
}

Назовите это так:

result[5] = computeSomething(commandName, memLocation, dataId);

(и замените имя computeSomething на эффект читабельности )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...