
String title = "\uD83C\uDF71 " + parameters.getCafeteriaName() + "(" + parameters.getCampusName().substring(0,2) + ") 메뉴";
String description = dietDate + "\n\n" + dietDescription;
사용자가 요청한 식당의 메뉴들을 반환해주기 위해서는
식당의 카테고리와 메뉴들을 구분하고, 또 날짜 데이터와 덧붙여주어야 한다.
그래서 위의 코드와 같이 문자열 데이터를 계속해서 더해주는 코드가 여러 개 있다.
이전의 글에서 설명했듯이
String은 문자열 연산을 했을 때 메모리 내의 데이터가 불변이라 문자열이 더해진 새로운 객체를 또 생성하여 비효율적이라는 것을 알게 되었다.
반면에 StringBuffer는 가변적이라서 append 메소드를 사용해 문자열을 이어붙여주면 그 크기만큼 기존의 메모리 크기를 늘려준다. 즉, 새로운 객체를 생성하는 것이 아니라 기존 객체에 문자열이 더해지는 것이다.
따라서 오늘은 비효율적인 연산을 줄이고자 한다.
// title 데이터 연결
StringBuilder title = new StringBuilder("\uD83C\uDF71 ")
.append(parameters.getCafeteriaName())
.append("(")
.append(parameters.getCampusName(), 0, 2)
.append(") 메뉴");
// 메뉴 연결
StringBuilder description = new StringBuilder(dietDate)
.append("\n\n")
.append(dietDescription);
위와 같이 StringBuilder를 사용해 수정하였다.
멀티 스레드 환경이 아니기 때문에 굳이 StringBuffer를 사용하지 않았다.