less than 1 minute read

📕

📄 내용

토비 스프링 책으로 공부하기 한 번 정독했던 Vol.1 복습


객체지향이란?


프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고
그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법 스프링의 설명대로 관심사 분리 와 연관지어 생각하면 이해에 도움됩니다.

객체지향

장점

1. 변화의 유연하게 대처
2. 발전 가능성 높음
3. 확장에 열려있음
4. 오류 발견이 비교적 쉬움

단점

1. 설계하는 데 시간이 오래 걸림
2. 설계하기 전 복잡한 과정

그럼에도 객체지향이라는 녀석을 정확하게 모르겠지만, 코드를 작성하고 변화에 유연하게 대응하는데 꼭 필요한 방법이라는 생각이 듭니다.

변화는 대체로 한 가지 집중된 곳에 일어나지만, 작업은 한 곳에 집중되지 않는다는 것이 큰 문제점이라고합니다. 예를 들어 여러 클래스에서 사용되고있는 메소드 명 혹은 메소드 내 코드를 변경하면 그 메소드를 사용하고있는 클래스를 모두 변경해야하는 번거로운 작업이 될 것입니다. 관심 같은 것끼리 모으고, 관심이 다른 것은 따로 떨어져서 **필요한 작업을 최소화하고, 분리된 클래스에게 영향을 주지 않도록 하는 것이 중요합니다.

  • 메소드로 중복된 코드를 별도로 분리해내는 작업을 해야합니다
    • 리팩토링 책에서 봤던 extract method 입니다.

더불어, SOLID원칙이라고 멘토분에게 들어서 찾아보았는데 위 이야기가 SOLID원칙 중 O부분인 Open close principle의 내용과 유사해보였습니다. 확장에는 열려있고, 변경에는 닫혀있다..라는 이야기인데 SOLID원칙에 대해서 다음에 좀 더 자세히 학습할 계획입니다.