티스토리 뷰

요즘 내가 자주 시도하는 객체지향적 사고는 어떻게 하면 공통된 부분을 뽑아내 여러 곳에서 재사용할 수 있을 지다

작성한 지 꽤 지났는데 어떻게 공통된 부분을 뽑아냈고 이를 재사용할 수 있는지 고민했던 글이다

고수가 보면 콧방귀를 뀔 코드일 수 있으나 초보라면 참고해보면 괜찮을 거라 생각해 첨부한다

 

 

[OAuth2] SpringBoot OAuth2 적용기 & 깨지는 테스트 살리기

개인 프로젝트에 OAuth2를 적용해봤다 Spring Security를 이용한 로그인, 회원가입 과정을 대체하기 위해서는 아니고 학습 목적이다 학습 목적이라 해보고 싶은 것 다 하려고 google, facebook, github, naver,

ryumodrn.tistory.com

 

저 코드도 아쉬운 부분이 많다

switch 난사로 더러워진 코드를 정리하는 것까진 좋았으나 들어오는 인자와 함수를 매핑할 자료구조가 따로 필요하다

객체지향적 코드라 할 수 없는 게 저것은 타입으로 묶은 게 아니고 자료구조를 이용해 묶은 것이기 때문이다

따라서 또 다른 OAuth2 Provider를 지원하기 위해서는 자료구조에 추가해줘야 한다는 단점이 있다

이 부분을 개선하기 위해서는 Provider 별로 다른 클래스를 만들고 얘네를 같은 인터페이스로 묶으면 될 것 같긴 하다만

당시에는 오버 엔지니어링 같아서 내버려두었다, 언젠가 다시 개인 프로젝트를 진행할 때의 도전 거리가 생겼구나

 

어설프지만 리팩토링을 거치면서 느낀 점이 있었다

객체지향을 제대로 사용하기 위해 인터페이스, 추상 클래스를 적절히 사용해야 하고

제대로 사용했다면 쓸데없는 if, switch문 등이 필요 없다

코드 가독성이 향상될 뿐만 아니라 기존 코드를 수정할 때 다른 코드에 미치는 파급력이 줄어든다

책에서 말한 것처럼 boolean flag, enum flag를 사용해 클래스를 나눠둔 것은 객체지향의 아류다

내 코드 또한 Map으로 객체지향을 흉내 낸 것이고

 

자바 공부한 지 1년이 돼가는데 이제야 객체지향이 뭔지 슬슬 보이기 시작한다

돌이켜 보면 캡상추다 달달 외우고 SOLID 달달 외우는 것보다 자신이 진행한 프로젝트에

흩뿌려져 있을 수많은 if, switch를 어떻게 없앨지 고민하다 보면 객체지향을 더 빠르게 이해할 수 있었을 것 같다

댓글
링크
글 보관함
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Total
Today
Yesterday