디자인 패턴의 아름다움 - 객체지향 패러다임부터 설계 원칙, 코딩 규칙, 리팩터링 기법, 디자인 패턴까지
왕정 지음, 김진호 옮김 / 제이펍 / 2023년 5월
평점 :
장바구니담기


개발자들은 효율적인 코드를 좋아합니다.


유지보수가 잘되고 재사용이 가능한 코드를 작성하면 개발하는 비용을 줄일 수 있습니다.


하지만 효율적인 코드를 작성하고 개발하지 않고 개발하는 경우도 많습니다.


기간 내 만들고 납품하는 형태의 경우가 그런 사례입니다.


효율적인 코드를 만들고 싶어 하는 분들에게 소개해 드릴 책이 있습니다.


소개해 드릴 책은 ‘디자인 패턴의 아름다움’입니다.


좋은 개발자들은 개발하면서 코드를 발전시키는 생각을 많이들 합니다.


우리나라에도 테스트 코드도 작성하고 코드 발전에 기여하는 훌륭한 분들도 계십니다.


이 책은 구글도 효율적인 코드를 만들고 서비스를 발전시켜 나가는 회사 중 하나인데요.

구글러가 알려주는 디자인 패턴을 어떻게 알려주는지 같이 살펴보겠습니다.




◆ 객체 지향 패러다임

객체지향 이전에는 함수형 프로그래밍과 절차지향 프로그래밍이 있었습니다.


프로그래밍의 차이는 무엇일까요?

객체 지향은 클래스 안에 메서드가 있고 연관되어 있습니다.

절차지향과 함수는 메서드와 객체가 연관되지 않고 분리되어 있는 차이가 있습니다.


객체 지향 특징에 대해 알아보겠습니다.


추상화는 구체적인 구현을 숨긴 것인데요.

객체지향과 함수형, 절차지향 프로그래밍에도 추상화는 있습니다.


객체지향의 큰 장점은 바로 인터페이스입니다.


객체지향은 인터페이스를 통해 코드 확장성을 향상시킬 수 있지만 함수나 절차는 인터페이스가 없어서 복잡하게 구현해야 합니다.


상속은 코드의 재사용성과 코드 중복을 방지하는 역할을 합니다.


다형성은 기존 함수를 재정의할 때 유용합니다. 상위 클래스는 그대로 유지하고 하위 클래스에서 확장할 수 있으므로 개방폐쇄 원칙을 지킬 수 있습니다.




◆객체지향과 함수형, 절차지향 프로그래밍의 차이점

객체지향은 클래스와 모듈설계에 중점을 둡니다.


함수와 절차형은 함수 및 세부 사항에 중점을 둡니다.


객체지향 관련 서적이 많이 나오는 이유는 기계어에서 인간 친화적으로 언어가 발전하면서 많이 사용하게 됐습니다.


하지만 여기서 고민해야 할 게 있는데요.

많이들 객체지향으로 설계하고 코드를 만들려고 합니다.


유닉스와 리눅스는 절차지향 프로그래밍을 사용하면서 계속 개발자들이 만들고 발전하고 있습니다. 이는 객체지향으로 변하는 것에 대한 모순일지 모릅니다.


그 이유는 무엇일지 고민해 보면 좋을 것입니다.


상수와, 유틸 클래스를 만들 때 한 곳에만 만들면 종속되고 컴파일하는데 문제가 생깁니다.


이 문제는 상수도 자신이 하는 역할에 맞게 쪼개서 관리해야 함을 알려줍니다.


객체지향으로 설계한다고 하지만 진짜로 객체지향을 설계하는 게 아닐 수 있습니다.




끝으로 객체지향을 제대로 이해해야 제대로 된 코드를 작성할 수 있습니다.


객체지향에 대해 정리 해봤습니다.


객체지향 코드를 작성한다고 하지만 절차지향 코드를 작성하면서 착각하는 경우도 있는데요.

View Object, Business Object, Entity, Service, Controller, Repository만 작성한다고 객체지향이 되는 것은 아닙니다.


이 코드들은 절차지향 코드에서도 사용하던 코드이기 때문입니다.


그러므로 이 코드를 쓰고 있더라도 객체지향 코드로 보기 어렵습니다.


절차지향이 먼저 나오고 기본이 되었기 때문에 그 코드 패턴이 객체지향의 기본이 되었다 볼 수 있습니다.


객체지향 설계부터 개발 원칙들에 대한 설명과 고민해 보면 좋을 질문도 던져줍니다.


책을 보면서 질문을 대비해 둔다면 회사 입사 시 큰 도움이 될 것입니다.


효율적인 코드에 관심이 많은 분에게 이 책을 추천합니다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo