오늘은 알고리즘 문제를 풀고 자바의 정석 객체지향 부분을 복습하고 기술 매니저님 세션을 열심히 들었다!
사실 오늘도 할 건 더 많았는데,, 어쩌다 보니 또 다 하지 못했다..ㅠㅠ 언제쯤 그날 정했던 할 일들을 다 할 수 있을까,,
할 게 너무 많아서 오히려 조바심이 자꾸 든다.. 잘하고 있는 건지 모르겠다
그래도 오늘 매니저님이 여러 가지 기초적인 개념들, refactoring 관련해서 많이 설명해 주셔서 얻은 게 많았다!!
매니저님 쵝오~~
1. Xmind로 설계 먼저 하고 코드 짜자!
2. 단일책임원칙! (Single Responsibility Principle)
하나의 객체는 반드시 하나의 동작만의 책임을 갖는다!
- jwt로 로그인을 구현할 때
- JwtUtil.class에 토큰 생성, 토큰 검증 등 메서드를 만들었고
- UserService에서 클라이언트에서 받은 Http request에서 토큰을 가져와서 jwtUtil.resolveToken(), jwtUtil.validation() 등과 같은 메서드를 실행하여 로그인한 유저 정보를 가져왔었다.
여기서 문제점!
jwtUtil 객체의 책임은 무엇인가? --> 토큰을 생성하고 검증하고 토큰에서 정보를 가져오고 등등 토큰 관련 작업을 수행한다.
UserService의 책임은 무엇인가? ---> 유저의 데이터를 조회하고 생성하고 수정하는 등 유저 관련 작업을 수행한다.
그렇다면 위의 방식으로 로그인을 구현할 때 단일책임원칙을 준수하였는가?
그렇지 않다...
UserService가 현재 토큰에서 정보를 가져오고 검증하는 등의 jwtUtil이 져야 할 책임까지 지고 있기 때문이다.
그리고 토큰을 검증하는 것은 service 쪽에서 하는 일이 아니라 따지고 보면 controller에서 해야 할 일이다. 사실 security 부분을 배우고 나면 tomcat의 filter와 interceptor가 해야 할 일이지만 현재는 security가 구현이 안 되어 있기에 굳이 따지자면 UserService보단 UserController가 하는 것이 더 합당하다.
3. Runcat
사실 이건 공부랑은 상관없지만,, 유용한 앱을 매니저님이 추천해 주셔서 알게 되었다! CPU의 상태를 귀엽게 위의 상단바에서 볼 수 있는데 CPU가 일을 많이 처리하고 있으면 고양이가 엄청 빨리 뛰고 그게 아니면 천천히 뛴다. 너무 귀엽다...ㅜㅜㅜㅜ
고양이 말고도 다양한 형식이 있으니 원하는 모양으로 바꾸면 상단바를 볼 때마다 기분 전환이 될 것 같다!
-끄읕-