if
в целом неплохая практика.Просто, когда вы обнаруживаете, что используете несколько цепочек if
- else if
подряд, это обычно запах кода, который указывает, что вы можете делать то, что делаете, более эффективно.
В этом случае, используястатический Map
- это хороший способ реорганизовать большую часть кода, чтобы он был более эффективным, чем эквивалент if
.Проблема в том, что одно из условий не соответствует остальным и не является постоянным значением.Таким образом, вы можете частично реорганизовать свой код следующим образом:
static HashMap<String, Color> colorMap;
static {
colorMap = new HashMap<>();
colorMap.put("R",Color.parseColor("#EF5350"));
colorMap.put("B",Color.parseColor("#7986CB"));
colorMap.put("V",Color.parseColor("#FFE082"));
colorMap.put("G",Color.parseColor("#FFFFFF"));
}
// ...
public int Colors(String col, int row) {
if (colorMap.containsKey(col)) {
return colorMap.get(col);
}
if (Math.floorMod(row, 2) == 0) {
return Color.parseColor("#e0e0e0");
}
return Color.parseColor("#eeeeee");
}
В качестве альтернативы, вы можете выполнить аналогичное действие с помощью блока switch
:
public int Colors(String col, int row) {
switch (col) {
case "R": return Color.parseColor("#EF5350");
case "B": return Color.parseColor("#7986CB");
case "V": return Color.parseColor("#FFE082");
case "G": return Color.parseColor("#FFFFFF");
}
if (Math.floorMod(row, 2) == 0) {
return Color.parseColor("#e0e0e0");
}
return Color.parseColor("#eeeeee");
}