Android 4.4 버전 (KitKat API 19) 부터는 Java 1.7 버전이 지원됩니다.
즉, switch 문에서 String을 이용할 수 있습니다. 덕분에 크게 가독성을 올릴 수 있게 되었는데요,
예를 들면 이런 if - else 로 가득한 코드가 있다고 가정해 봅시다.
String case1 = "00002a19-0000-1000-8000-00805f9b34fb";// "Battery Level"
String case2 = "00002a49-0000-1000-8000-00805f9b34fb";// "Blood Pressure Feature"
String case3 = "00002a35-0000-1000-8000-00805f9b34fb";// "Blood Pressure Measurement"
String case4 = "00002a38-0000-1000-8000-00805f9b34fb";// "Body Sensor Location"
String inputUuid = "00002a35-0000-1000-8000-00805f9b34fb";
if (inputUuid.equals(case1)) {
// Do something
} else if (inputUuid.equals(case2)) {
// Do something
} else if (inputUuid.equals(case3)) {
// Do something
} else if (inputUuid.equals(case4)) {
// Do something
}
수많은 if-else는 가독성을 크게 해치는데요, 이걸 제거할 필요가 있습니다.
(어차피 String compare가 들어갈 것이기 때문에, 수행속도 면에서는 동일할 것으로 생각됩니다)
이럴 때, 아래와 같이 코딩을 할 수 있습니다. 단, OS버전 등 위에서 언급한 조건이 충족되지 않으면 쓸 수 없습니다.
final String case1 = "00002a19-0000-1000-8000-00805f9b34fb";// "Battery Level"
final String case2 = "00002a49-0000-1000-8000-00805f9b34fb";// "Blood Pressure Feature"
final String case3 = "00002a35-0000-1000-8000-00805f9b34fb";// "Blood Pressure Measurement"
final String case4 = "00002a38-0000-1000-8000-00805f9b34fb";// "Body Sensor Location"
String inputUuid = "00002a35-0000-1000-8000-00805f9b34fb";
switch (inputUuid) {
case case1:
// Do something
break;
case case2:
// Do something
break;
case case3:
// Do something
break;
case case4:
// Do something
break;
}
라인 수는 더 길어 보입니다. 하지만, 1) 코드 량 자체가 훨씬 적고, 2) if문에서 오타가 날 확률도 적습니다.
참조: http://stackoverflow.com/questions/14367629/android-coding-with-switch-string
'Android' 카테고리의 다른 글
구글이 배포한 안드로이드용 이클립스, ADT 마지막 버전 링크 (0) | 2015.11.20 |
---|---|
안드로이드 앱에서 로그캣 로그를 얻어오기, 로그캣 로그 지우기 (0) | 2015.09.01 |
Lombok을 Android eclipse (Luna) 에서 이용하기 (0) | 2015.06.24 |
Picasso 라이브러리의 메모리 해제 방법 (0) | 2015.05.27 |
Eclipse Metrics plugin을 이용한 소스 규모 측정 (0) | 2015.04.28 |