Develop/Spring 공략

[Kiosk] 트러블슈팅

쿼카홀릭 2025. 1. 21. 11:45

Kiosk 과제를 진행하며 새로 알게된 사실 및 보완해야할 부분을 작성해보자.

 

1. List에 값을 추가할 때 클린 ㅋiosk 과제를 진행하며 새로 알게된 사실 및 보완해야할 부분을 작성해보자.

 

 

 

1. List에 값을 추가할 때 가독성을 높일 수 있는 문법(List.of)

더보기

<배경>

여태껏 List에 값을 추가할 때, 객체를 생성하고 그 객체를 리스트명.add(객체명)을 사용하여 리스트에 추가하였다.

 

<문제점>

단점은 아래와 같이 계속해서 add를 써주어야 함으로 불필요하게 코드가 길어지고 중복이 많이 나타났다.

ex)

클래스명 객체1 = new 클래스명(이름,가격,상세설명)

클래스명 객체2 = new 클래스명(이름,가격,상세설명)

클래스명 객체3 = new 클래스명(이름,가격,상세설명)

클래스명 객체4 = new 클래스명(이름,가격,상세설명)

클래스명 객체5= new 클래스명(이름,가격,상세설명)

리스트명.add(객체1)

리스트명.add(객체2)

리스트명.add(객체3)

리스트명.add(객체4)

리스트명.add(객체5)

 

<해결 방법>

list.of 기능을 쓰면 리스트를 관리할 클래스의 객체를 하나 생성할 때, 인자값으로 리스트를 적고 list.of 를 통해 new 표현을 써서 리스트에 바로 값을 집어넣을 수 있게 된다.

 

<새로 알게 된 점>

1. 불필요하게 코드를 길게 작성하지 말고 가독성 있게 깔끔한 클린 코드로 작성하자.

2. .add() 기능도 좋지만, list.of와 같이 클린코드를 작성할 수 있는 기능에 대해 한번 더 생각해 보자.

2. List에 final을 붙이는 이유

더보기

<배경>

리스트를 private으로 필드에 선언을 하였다.

 

<문제점>

IntelliJ가 해당 list가 final이 아닌지 밑줄을 그어서 오류로 표시를 해주었다.

 

<해결 방법>

List 앞에 final을 붙였더니 오류가 사라졌다.

 

<새로 알게 된 점>

1. 리스트는 참조형 변수 즉, reference type의 변수이다. 이는 각 변수마다 주소값을 가지며, 직접 print했을 때는 담긴 값이 아닌 리스트의 주소값으로 출력되는 것을 알 수 있다. 따라서, 우리가 값을 추가하거나 삭제할 때, 리스트 안에 담긴 데이터값을 변경하는 것이지 해당 리스트에 부여된 주소값을 변경하는 것이 아니므로 final을 작성해주는 것이 맞다.

3. 가격이 소수점으로 되어 있을 때 정확도 차이

더보기

<배경>

과제에서 가격을 표시하는 "w 6.8"을 구현하기 위해 문자열인 String type으로 정의를 했었다.

 

<문제점>

출력할 때, "w"는 따로 작성해서 출력을 할 수있었는데 간과한 부분이었다. 그리고 소수점 숫자를 받을 때는 Float나 Double로 작성해야하는 것을 상기하지 못했다.

 

<해결 방법>

소수점을 관리하거나 연산할 때는 Float와 Double 보다는 BigDecimal로 정의해 주는 것이 더 명확하다고 배웠다.

 

<새롭게 알게 된 것>

1. 소수점 연산 시 BigDecimal이 더 정확한 결과 값을 가져온다.

2. BigDecimal은 연산 시, String type으로 선언해야 명확한 값을 가져올 수 있으며 Float나 Double로 선언할 경우 String.valueOf()로 형변환을 해주어야 한다.

3. BigDecimal은 비교연산자를 바로 사용할 수가 없다. 따라서, compareTo() 메서드를 이용하여 사용하여야 한다. 예시는 아래와 같다.

 BigDecimal num1 = new BigDecimal("1");
 BigDecimal num2 = new BigDecimal("2");
 
 if(num1.compareTo(num2) == 0){
       //num1과 num2가 같은 경우
   }

 if(num1.compareTo(num2) >= 1){
      //num1이 num2보다 큰 경우
   }

 if(num1.compareTo(num2) <= -1){
      //num1이 num2보다 작은경우
    }

'Develop > Spring 공략' 카테고리의 다른 글

[Spring] 카카오맵 API 사용 초기 세팅  (0) 2025.04.22
[Spring] Spring JPA - Page 와 Slice  (0) 2025.04.01
[Calculator] Lv.2 트러블슈팅  (0) 2025.01.10
[Calculator] Lv.1 트러블슈팅  (0) 2025.01.10
2024.12.23(Mon.)  (0) 2024.12.23