안녕하세요 질문이 있습니다.
364
投稿した質問数 4
var 보단 val 을 사용하라고 하셨는데
그렇다면 var은 언제 사용해야하나요?
回答 1
1
안녕하세요. cu_bot님. 짧지만 굵은 중요한 질문 감사드립니다! 😄
우선 질문에 대한 답변을 드리자면 'val 을 사용할 수 없는 부분에서만 최소한으로' 입니다.
백엔드 개발자를 위한 Spring Boot + JPA 조합의 프로젝트에서는 entity class의 값 변경이 필요한 프로퍼티(Account(계좌) Entity의 balance(잔액) 프로퍼티 같은 부분입니다.) 가 이에 해당됩니다.
참고로 저도 실무의 코드를 다시 한번 살펴보니 해당 엔티티 프로퍼티 부분을 제외하고는 거의 var을 사용하지 않고 있네요. 🙂
조금 더 근본적으로 왜 var 대신 val을 사용하라고 했는지 설명도 드리면 좋을 것 같습니다.
변경 가능한 변수는 여러가지 어려움을 야기합니다.
코드가 짧지 않고, 케이스에 따라 변수의 값을 변경하는 경우 어떤 값이 되어 있을지 파악이 어렵고 그에 따라 로직 수정도 어려움
여러 스레드가 공유하는 영역에 변경 가능한 변수가 존재하는 경우의 문제
여러 스레드가 동시에 값을 수정하게 되면 특정 스레드의 변경이 적용되지 않을 수 있음
여러 스레드가 동시에 접근하고 값을 변경하려고 할 때 값 변경의 순서가 뒤섞이며 예기치 않은 결과가 나올 수 있음
과거에 C언어나 Java 언어가 만들어졌던 시대에는 컴퓨터의 메모리가 비쌌고, 리소스를 최대한 아껴쓰는 방향으로 언어의 설계가 되었으며 따라서 변수를 한번 만들면 계속 재활용하는 방식으로 코딩을 많이 했습니다. 위의 문제들은 여러 방법을 활용하여 회피하는 방식으로 진행하였습니다.
변경 불가능한 변수의 장점과 단점
최근에는 함수형 프로그래밍 기법이 각광받고 있으며 기본적으로 변경 불가한 변수(immutable variable)이 선호되며, 변경 가능한 변수가 없는 언어도 있습니다. (Haskell과 같은 순수 함수형 프로그래밍 언어 등) 변경 불가능한 변수만 사용하면 위에 나온 어려움을 반대로 로직의 파악이 쉬워지고, 쓰레드 공유에 대한 고민을 할 필요가 없어집니다.
하지만 변경 불가능한 변수만 제공하는 경우 필요할 때마다 변수를 계속 새로 만들어야 하기 때문에 기본적으로 메모리 사용량이 큰 편이고 그래서 컴퓨팅 성능과 메모리의 크기가 커진 최근에 와서 다시금 주목받기 시작했다는 분석도 있습니다. (컴퓨팅 리소스 사용량 ⤴ 개발자의 편의성⤴)
제 강의에 첫 질문을 남겨주셔서 정말 감사드립니다 😀
위 답변이 도움이 되었으면 좋겠습니다~!
언제든 추가 질문 있으시면 편하게 남겨주세요.
감사합니다. 🕺
다양한 관점의 코드 경험을 위해 개선하지 않은 코드
1
47
1
강의가 검은 화면으로 나옵니다.
0
48
1
histories() 응답에 PointHistory.id를 포함한 이유가 궁금합니다/
1
44
2
DI시 eager과 lazy
0
37
2
타입스크립트
0
46
1
actuator에서 health 외의 다른 URL은 404 Notfound 에러가 발생합니다.
0
46
2
SettlementTargetRepository Jquery 질문
1
48
2
부가 기능을 이벤트 핸들러로 분리하는 기준이 있을까요?
1
60
2
주사위앱 소개 및 레이아웃 설정 문제
0
59
2
엔티티의 pk 를 0으로 초기화하시는 이유가 있을까요??
1
67
2
제미니님 안녕하세요!
1
73
2
MCP 연동 인텔리제이 2.6.1
0
120
2
개념 간 격벽 분리와 목록 조회 시 발생하는 참조 구조
1
80
2
무중단 배포 / 컨테이너 이미지 관리에 주로 어떤 인프라를 활용하시나요?
0
66
1
@MockK에서 null을 할당하는 이유?
1
81
1
@RelaxedMockK로 모킹하고 save 함수를 왜 또 모킹하는지 모르겠습니다.
1
339
1
build.gradle.kts 변경시 오류가 발생합니다.
0
470
1
서비스, 컨트롤러 질문입니다.
0
359
2
실습. dto 변환해보기
1
341
1
실습. gradle update/script 강의 문의
1
334
2
IntelliJ IDEA 문의
1
266
1
PDF 안에 파일이 없습니다
1
374
2
강의교재 PDF
1
267
1
import 질문
1
334
2

