getUsersTest()에서 getUsers()로 메소드명을 명시하여 호출하는 이유는 무엇인가요?
강의에서 getUsers()가 get으로 시작하다보니 코틀린에서 프로퍼티처럼 간주한다고 하셨는데, 실제로 인텔리제이의 자동완성에서는 getUsers()가 나타나지 않고 users만 나타나는 것을 볼 수 있었습니다.
다만 위와 같이 users를 사용해서 호출해도 테스트가 정상적으로 통과되는것을 확인할 수 있었습니다.
그렇다면 get을 생략해서 코드 길이를 줄일 수 있지 않나? 하는 생각이 들었는데 강의에서와 같이 메소드명 전체를 명시하는 이유에 대해서 알고싶습니다!
답변 1
1
안녕하세요~ 콜라곰님!!! 아이고~~ 좋은 질문이십니다 👍👍
맞습니다~ 제가 getUsers() 가 get으로 시작해 프로퍼티처럼 간주된다고 말씀드렸는데요! 그렇기 때문에 메소드의 전체 이름인 userService.getUsers()대신 users 만 사용해도 정상 동작하는거에요!!
그렇지만, 강의에서 getUsers() 를 사용하는 이유는, users 만 쓰게 되면 userService.users 라고 했을때 누군가 이를 '프로퍼티'로 착각할 수 있기 때문입니다!
사실은 함수인데 밖에서의 사용 모습때문에 프로퍼티로 착각하는거죠!!
함수와 프로퍼티의 그 원리 및 용례가 다르기 때문에 이를 착각하게 하는 것은 큰 위협으로 이어질 수 있습니다! 실제로 <이펙티브 코틀린 Item 16> 에서도 프로퍼티를 쓰려면 다음과 같은 경우에 사용하는 것이 좋다고 권장하고 있습니다~ 😊 (참고 자료 입니다!! https://javabom.tistory.com/136)
위와 같은 이유로 저는 다음과 같은 Trade-Off를 한거에요!
코드 길이를 약간 줄이되, 다른 사람이 프로퍼티로 착각할 수 있게 하기
코트 길이를 약간 늘리되, 확실히 함수임을 명시하여 착각하지 않게 하기
이 중에 전자를 선택한겁니다!
답변이 도움이 되었으면 좋겠네요!! 감사합니다, 편안한 밤 되세요!! 🙇🙇
안녕하세요 혹시 프론트 코드 제공받을 수 있을까요?
0
71
2
실행이 안되네요
0
69
2
프론트 영역 보는법
0
54
2
companion object
0
79
2
Custom 레프직토리 형식
0
61
2
Querydsl 도입
0
69
2
fetch join DISTINCT 중복제거
1
86
2
표준 예외와 커스텀 예외 사용 전략 질문
0
95
3
이 질문이 왜 없는지 이해가 안 되지만 문제 인식 및 해결 방법 남깁니다.
1
178
2
테스트를 위한 코드
1
106
2
프로젝트 실행 에러
0
154
2
PDF 문서에 오타가 있어서 알려드립니다.
1
102
1
enum질문
1
87
1
테스트 후 AfterEach 함수에서 나오는 쿼리
0
136
2
테스트 fixture
1
211
2
./gradlew test 실행시 인식할수 없다고 뜹니다.
0
142
1
test 코드 실행시 경고가 발생합니다.
0
144
1
13강 User Kotlin 변환중
2
173
3
'추가 - 코프링과 플러그인' 강의 7:46 allopen 관련 질문
2
174
1
-
0
143
2
4:28 build.gradle 수정 시 kotlin-reflect관련 implementation 추가 해야할까요?
0
314
3
junit import 불가
0
280
3
테스트 코드와 관련하여 질문이 있습니다.
1
219
1
hibernate가 select를 두번 하는 이유
0
240
1





