서버에서 예외(에러)가 나면 보통 이런 응답이 내려간다. 이 에러메시지 그대로 유저에게 보여주는 건 바람직하지 못하다. 그래서 보통 에러메시지를 유저편의적으로 가공하는데, 이를 '에러메시지 워싱'이라고 표현한다. # 얼마나 구체적인 에러 메시지를 보여줄까?워싱 주체에 대해 논하기 전, 먼저 유저에게 어떤 에러메시지를 보여주는 게 적합할지 생각을 해보자. 정답은 아닐 수도 있지만, 필자는 이렇게 생각한다. 1. 유저 스스로가 다른 액션을 통해 해당 에러를 해소할 수 있는 경우는 최대한 구체적으로 알려준다. ex) 회원가입 시 비밀번호 규칙 중, 특수기호가 포함되어야 하는데 빠진 경우추상적인 경우: 비밀번호 규칙에 올바르지 않습니다.구체적인 경우: 특수기호가 빠졌어요. 비밀번호에는 적어도 1개 이상의 특수..
간혹 서비스 객체를 인터페이스와 구현체로 분리해서 사용하는 레포들을 볼 수 있다. interface UserService { fun updateUserInfo(request: UpdateUserInfoRequest) fun getUserInfo(): UserInfo fun login() } @Service class UserServiceImpl( private val userRepository: UserRepository, private val loginHelper: LoginHelper, ) : UserService { override fun updateUserInfo(request: Upda..
테스트코드는 "미래를 위한 투자"라고 생각한다.당장 기능 구현에 꼭 필요한 부분은 아니지만, 추후 유지보수를 생각하면 테스트코드 작성은 필수적이라고 할 수 있다.다만 대부분의 경우... 기능개발에 급급하여 테스트코드 작성에 신경을 못 쓰는 경우가 많다. 특히 신규 프로덕트를 개발할 때 테스트코드 작성을 하지 않을 가능성이 높다. 따라서 시간은 좀 더 들더라도 미래의 나를 위해, 혹은 내 코드를 유지보수할 누군가를 위해 테스트코드를 작성하는 습관을 들이는 것이 좋다. 투자는 즉시 그 효용성을 직접적으로 확인하기 어렵다. 하지만 분명 미래에 가치가 생기는 시점이 존재한다. # 왜 테스트 코드는 필요한가?다음과 같은 이유로 테스트코드는 필요하다.이미 구현된 기능을 리팩토링 할 때 영향도 파악이 용이해진다.이..