inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)

8강. 유저 관련 기능 테스트 작성하기

getUsersTest()에서 getUsers()로 메소드명을 명시하여 호출하는 이유는 무엇인가요?

해결된 질문

263

콜라곰

작성한 질문수 7

1

강의에서 getUsers()가 get으로 시작하다보니 코틀린에서 프로퍼티처럼 간주한다고 하셨는데, 실제로 인텔리제이의 자동완성에서는 getUsers()가 나타나지 않고 users만 나타나는 것을 볼 수 있었습니다.

다만 위와 같이 users를 사용해서 호출해도 테스트가 정상적으로 통과되는것을 확인할 수 있었습니다.

그렇다면 get을 생략해서 코드 길이를 줄일 수 있지 않나? 하는 생각이 들었는데 강의에서와 같이 메소드명 전체를 명시하는 이유에 대해서 알고싶습니다!

java spring kotlin spring-boot refactoring

답변 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