오늘로 이전 프로젝트에 있던 기능들을 하나를 제외하고 다 옮겼다. 그 하나도 프론트엔드가 구현이 되고 나면 추가할 예정이다.
어느정도 구현을 마치고, 튜터님께 코드 리뷰를 요청하였다. 그런데, 실수로 pull request가 아닌 바로 push를 하는 바람에 튜터님께 괜히 민폐를 끼치게 되었다. 다음에는 pull request를 적극적으로 사용하자.
튜터님께 받은 조언은 여러가지가 있는데, 사소한 실수 몇가지 지적해주셨고, 특정 엔티티의 ID 값이 Long이 아닌 String인 점을 지적해주셨다. 다른 엔티티들언 전부 Long인데, 이것만 String이라서 혼동되니까, ID를 Long으로 수정을 권고하셨다. 내가 테이블 정규화를 둘러보면서, 유니크한 칼럼을 id 외로 두는 것이 꺼려져서 이렇게 두었었는데, 이렇게 지적을 받으니 할 말이 없어졌다. 그래서 이번에 수정을 하였다.
또한, 이전 프로젝트의 언어가 Java였기에, 이번 코드는 let,run,apply 등을 적극적으로 사용해서 Kotlin스러운 코드를 추구하고자 했는데, 튜터님 말씀으로는 이것 때문에 다소 가독성이 떨어져서 코드의 질이 좋지 않아보인다고 하셨다.
return RepositoryUtil.getValidatedEntityWithAuthority(galleryRepository, id)
.apply { this.explanation = galleryPatchRequest.explanation ?: this.explanation}
.apply { galleryPatchRequest.galleryImageName?.let { name -> this.galleryImage = Image.from(name) }}
.apply { this.popularThreshold = galleryPatchRequest.popularThreshold ?: this.popularThreshold }
.let { gallery -> galleryRepository.save(gallery).let { GalleryResponse.from(it)} }
나름 가독성을 신경을 썼다고 생각했는데, 이 부분은 약간 수정을 하고, 코드 기조를 좀 바꿔봐야겠다.
마지막으로 특정 코드에 AOP 사용을 추천하셨는데, 문제가 된 코드는 다음과 같다.
fun <T, ID> getValidatedEntityWithAuthority(repository: JpaRepository<T, ID>, entityID: ID): T
{
val entity = getValidatedEntity(repository, entityID)
if(entity !is CreatorAuditEntity) throw IllegalArgumentException("잘못된 엔티티입니다.")
if((entity as CreatorAuditEntity).creator?.username != SecurityUtil.getUsername())
throw NotHaveAuthorityException(SecurityUtil.getUsername(), entity.javaClass.typeName)
return entity
}
특정 엔티티의 창조자와 로그인된 유저의 이름이 같은지 확인하는 부분인데, 이 부분이 종단면적인 관심사였기 때문에, 여기에 AOP를 사용을 해보라고 권고하셨다. 그래서, 한 번 사용을 하였는데, 코드가 제대로 동작을 안했다.
곰곰히 생각을 해보니, companion object여서 프록시 객체를 만들지 못하는 게 아닌가?라는 추측을 하였다. 그래서 Util 클래스에서 벗어나 service 클래스에서 적용을 하려하는데, 어떻게 적용을 할지 많이 고민이 된다.
AOP에 대한 정보는 내일 정리해보도록 하고, 시간이 되면 이전 프로젝트의 프론트엔드를 옮기는 작업을 하자, Bootstrap으로 대충 조립하며 만들어서 다소 조잡하지만 없는 것 보단 나으니까.
'부트캠프 일지' 카테고리의 다른 글
부트캠프 79일차 후기 (0) | 2024.03.21 |
---|---|
부트캠프 78일차 후기 (0) | 2024.03.20 |
부트캠프 76일차 후기 (1) | 2024.03.18 |
부트캠프 75일차 후기 (0) | 2024.03.15 |
부트캠프 74일차 후기 (0) | 2024.03.14 |