일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 애자일 싫타
- 오블완
- 핀포인트
- save/update
- jar 배포
- 티스토리챌린지
- LPOS
- UnsupportedOperationException
- intellij
- Loki 로그
- R2DBC Paging
- 플루터
- ㅉ때
- Armeria
- 월급루팡 일지
- reids
- Ingress Controller Fake
- pinpoint 2.5.3
- 논블록킹 성능
- 7879
- 개발 어렵당.ㅠ
- jsonMarshaller
- pinpoint
- nGinder
- OIDC
- fake jwt
- RedirectService
- 노드간 통신
- hbase 저장공간 설정
- formik
- Today
- Total
대머리개발자
멤버 변수 바인딩에 대한 고민 본문
자바가 익숙했다면 묻지도 따지지도 않고 작업했던
private 멤버 변수와 getter/setter는 그냥 공식이다. f= ma
무조건하는 이유가 있다.
- 데이터의 무결성을 보장해 준다.
- 내부 상세를 숨긴다. (캡슐화)
디테일은 몰라도 남들 다 하니깐!
자바에서의 공식을 코틀린에서는 자동으로 해준다. 🌟👍
But 쓸모가 없다. 자동으로 만들어 지는 두 가지 조건 중 하나가 public 이다.
data class BoardDto(
public var title: String
, ...
}
근데 public을 사용하게 되면 어차피 직접 접근이 가능하기 때문에 실상 getter/setter가 필요 없다.
근데 굳이 왜 만들어주는거야? 전혀 쓸모가 없자뇨!!
data class BoardDto(
private var title: String,
}
심지어 요세 추세는 getter/setter 를 지양한다고 한다.
쌈박하네..
지금까지 발생한 오류를 가만 잘 생각해 보면 95%이상은 데이터가 문제였을 것이다.
(로컬에서는 잘 되는데.. 운영에서 안 된다.? 리소스가 똑같은데 왜 그란데?)
백발백중 데이터다.
해서 immutable하게 관리하려고 하는것이다.
여기저기서 갔다쓰고 여기저기서 설정하면 이슈 트래킹은....하악하악!!
지양은 쓰지 말라는것이 아니다.! ㅎ
최대한 안 쓰려고 노력하다보면... 길이 보이겠쥬.
예를들어 보자!
boardDto 멤버 변수를 getter를 이용해서 접근하고 있다.(컴파일 생성 시 자동변환)
데이터의 바인딩을 DTO 내부에서 진행하면 this로 접근 할수 있으니 private하게 사용할 수 있겠다.
찐으로 필요한 녀석만 get를 만들어서 사용하면 되겠다. 그럼 애초에..val을 쓰면 되는 거 아니냐?ㅋㅋ..하악하악
대충 하자..
어플리케이션이 작동하는데는 문제 없으니 ..!!ㅋ
하나 더 예를 들어보자
...
commentEntity = commentRepository.findByIdOrNull(commentDto.id) ?: throw Exception("comment is null")
commentEntity.content = commentDto.content
...
마치 setter와 같은 느낌이다. ㅎ
commentEntity = commentRepository.findByIdOrNull(commentDto.id) ?: throw Exception("comment is null")
commentEntity.updateContent(commentDto.content)
~~
fun updateContent(content: String){
this.content = content
}
eㄴㅇㄹㄴㅁ
ㅇㄹ
immutable
'개발이야기 > 코틀린' 카테고리의 다른 글
데이터 정규화 (1) | 2024.05.17 |
---|---|
[코틀린]null 처리 재미지다! (0) | 2024.04.02 |
코루틴 조으다! (1) | 2024.03.19 |
아르메리아를 쓰자. (1) | 2024.03.15 |
ModelMapper - LocalDateTime처리 (1) | 2024.01.29 |