⚒️StringBuffer 사용해 문자열 연산하기

dev_itzel_02✨·2025년 3월 6일

⚒️Clean Code

목록 보기
4/4
post-thumbnail
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를 사용하지 않았다.

profile
🐜👣steadiness🐜👣

0개의 댓글