[SpringBoot] Java -> Kotlin 리팩토링 순서의 정석
1. 테스트 코드 작성
2. Entity(Domain) 리팩토링
3. Repository 리팩토링
4. Service 리팩토링
5. Controller, DTO 리팩토링
우선, 테스트코드를 먼저 작성해놔야 한다.
자바 코드를 코틀린 코드로 바꿨는데 잘 작동하지 않을 수 있기 때문에, 이 과정이 선행되어야 한다.
모든 모듈에 대해서 테스트코드를 작성하기엔 어려우므로,
Controller, Service, Repository, Domain 중에서 고르자면
Service 모듈 하나에 대해서만 테스트 코드를 작성함으로써 전체적인 로직에 대한 검증을 진행할 수 있다.
-> Controller는 테스트 방법이 조금 상이해서, 추가적인 테스트가 필요하다. (프론트 테스트 or 추가 테스트 코드 작성 or Insomnia같은 REST API)
그리고 나서 Entity를 교체하고,
당연하게도 의존성이 없는 Repository부터 리팩토링 하고 의존성이 있는 계층들에 대해서 리팩토링을 진행하면 된다.
Entity를 리팩토링 한 뒤에 테스트 코드 실행
Repository를 리팩토링 한 뒤에 테스트 코드 실행
Service를 리팩토링 한 뒤에 테스트 코드 실행
Controller를 리팩토링 한 뒤에 테스트 코드 실행
이런 식으로 테스트 코드를 계속 활용해주면 된다.
+ 혹시 Reflect 관련 오류가 있다면 다음 denpendency를 추가해주면 된다.
implementation 'org.jetbrains.kotlin:kotlin-reflect:1.6.21'
+ 코틀린에서는 scope function 중에 first 라는 것도 있는데, 다음과 같이 사용할 수 있다.
val userList: MutableListOf<String>
this.userList.first {
str -> str == "원하는 값"
}
first 람다 내의 조건을 만족하는 첫번째 원소를 리턴한다.
+ 코틀린에서는 Getter / Setter를 기본적으로 생성해준다는 점을 알아야 한다. (데이터 클래스가 아니더라도)
그래서 setter 함수를 정의해 줄 필요가 없지만, updateName(name: String) 같이 좋은 이름의 함수명을 정의해 주는 것이 훨씬 Clean!
게다가 기본적으로 변수는 private로 설정해주면 더 좋게 되는 것이다.