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 |