본문 바로가기
일기

수퍼클래스 뽑아내기~

by 꼬질꼬질두부 2024. 9. 26.

업무를 하는데 기존 클래스에서 수퍼클래스를 뽑아내라는 task를 받았다.

 

처음에는 class Parent(){기존 코드들}을 만들고,

class Child extends Parents{constructor}를 한 뒤 코드리뷰를 받으러 갔다.

 

결과는~~?~?

CTO님이 웃으셨따ㅎㅎ 그래서 나도 따라 웃었는데.. 디자인패턴 공부안했냐고 하셨다..

근데 사실 나는 디자인 패턴 수업을 2년에 걸쳐 수강신청 실패했기 때문에 진짜 공부를 안했다.. 심지어 교수님한테 수업이 너무 듣고싶다고 메일도 보냈는데도 빌넣 실패했었다.. 근데 그래도!! 객체 지향 수업은 들었기 때문에 객체 지향 , 절차 지향 그 정도는 알았는데 막상 내 코드에 적용하기가 어려웠다ㅠ 특히 상속은 객체 지향 수업을 들을 때도 어려웠다.. 

 

일단 class Parent(){기존 코드들} & class Child extends Parents{constructor} 이 코드는 그래도 기존 코드들과 호환되며 잘 작동하긴해서(저렇게 갖다 옮겨놨으니 당연한 얘기..) 일단 패스했는데, 뭔가 계속 신경이 쓰여서 회사 다른 코드들이랑 내 코드를 비교해봤다.

음~~ 다른 코드들은 확실히 깔끔하게 interface나 abstract class로 잘 구현돼있었다. 다른 관련 코드들 여러개를 보고 나니깐 살짝 감이 와서 코드 리팩토링에 들어갔다.

 

고민했던 부분은 Interface로 구현할지 abstarct로 구현할지 이었는데 어떤 경우에 각각을 채택 하는지 감이 안왔다. 객체 지향을 글로 대충 배운 사람은 나처럼 된다. 근데 나 객체지향 성적 나쁘지않았는데.. 공부를 허투루 했나보다ㅋㅋㅋㅋ 아무튼 Interface와 추상클래스에 대해 각각 공부하고 간단하게 블로그에 정리했다.

2024.09.24 - [BE 공부] - [객체지향] 인터페이스와 추상 클래스

 

[객체지향] 인터페이스와 추상 클래스

인터페이스 vs 추상 클래스인터페이스와 추상 클래스는 둘 다 공통적인 구조나 동작을 정의하는 데 사용되지만, 사용 목적과 방식에 따라 각각 적합한 상황이 있습니다. 언제 인터페이스를 사용

comeintoflower.tistory.com

 

근데 내가 구현하는 기능은 버전에 따른 상위클래스가 버전에 상관없이 작동하고, 버전에 구애받는 메소드들은 해당 버전클래스에서 구현되어야한다고 생각해 추상화 클래스를 만들었다.

 

그래서 버전 영향 받는 메소드들은 다 추상화처리 + 공통되고 버전에 상관없는 부분들은 상위 클래스에 명시해줬다.

아직 코드리뷰 안받아서 내가 잘한건지 잘 모르겠는데!! 코드리뷰받고 내가 잘했는지 글을 추가하겠다 크크
이제 글 끝! 바이~

댓글