[서평] 엘레강트 오브젝트

hyejineee🧞‍♂️·2021년 2월 25일
0

객체지향

목록 보기
2/2
post-thumbnail

[서평] 엘레강트 오브젝트 : 새로운 관점에서 바라본 객체지향

이전에 읽었던 객체지향 책들과 비교하면 이 책은 머릿속에 물음표를 쉴 틈 없이 뜨게 만든 책이 아닐까 싶다. 이전에 알고 있었던 객체지향의 원칙에 대해 많이 생각하게 되고, 어떤 것이 맞을까? 어떻게 따라야 할까? 이 방법이 정말 유지 보수성을 좋게 만들어줄까?를 계속 생각하게 만드는 책이다. 이전에 내가 공부한 지식과 이 책에서 이야기하는 지식이 충돌하는 부분이 꽤 많았다. 책의 앞쪽에 역자가 말한 것처럼 몇 개의 원칙에는 전적으로 동의할 수 없었지만 그래도 적어놓고 보면 좋을 내용들이 다수였다. like 객체지향 생활체조...

또 하나 좋았던 것은 책을 읽으면서 이전에 함수형 프로그래밍 스터디를 했을 때 나왔던 객체지향과 함수형 프로그래밍에 대한 주제를 다시 생각해 볼 수 있게 되었다. 그때 나왔던 얘기가 " 함수형 프로그래밍과 객체지향 프로그래밍을 결국은 같은거다." 라는 얘기였는데 책을 읽고 이렇게 돼서 나온 말이였구나! 라는 깨달음을 얻게 되었다. 3장에서 선언형 프로그래밍과 함수형 프로그래밍에 대한 내용을 소개하고 조합 가능한 데코레이션이라는 구조를 소개하는데 소개된 코드의 모습이 함수형 프로그래밍에서 사용하는 함수 합성과 매우 비슷하다. 또한 책에서 불변성을 중요시하는 점 또한 함수형 프로그래밍을 생각나게 했다.

names = new Sorted(
  new Unique(
  	new Capitalized(
    	new Replaced(
      	new FileNames(
        	new Directory(
          	"/var/users/*.xml"
          )
        )
      )
    )
  )
); 

앞으로 이 책에서 배운 지식과 이전에 읽었던 책의 지식을 종합하여 프로젝트를 하나 만들어 보려고 한다. 이 책에서 소개한 원칙들이 구체적으로 도움이 될 것 같다.

  • 클래스의 이름은 무엇을 하는지(what he does)가 아닌 무엇인지(what he is)에 기반하여 작명한다,
  • 하나의 주 생성자, 다수의 부 생성자
  • 생성자에 어떠한 일을 하는 코드 금지
  • 클래스 안에는 1개 이상 4개 이하의 객체를 캡슐화
  • 객체를 분리하는데 사용되는 도구인 인터페이스(다른 객체와 의사소통 하기 위해 따라야 하는 계약) 를 사용하라.
  • 메서드의 목적에 따라 메서드명을 지어라.
    • 빌더 (무엇을 반환하는 메서드) = 명사
    • 조정자( 엔티티를 수정하는 메서드) = 동사
    • boolean값을 반환하는 메서드 = 형용사
  • public static final 사용하지 마라. 전역 가시성 안에 방치된다.
  • 불변 객체를 만들어라.
  • 문서 대신 테스트
  • 모의 객체 대신 페이크 객체를 만들어서 사용하라.
  • 5개 이하의 public메서드만 노출해라.
  • 정적 메서드 금지
  • Null 금지
  • Getter, setter 금지
  • 부 생성자 밖에 new를 사용 금지
  • 인트로스펙션, 캐스팅 금지
profile
여기 저기 관심이 있는 안드로이드 개발자 입니다. 🤟🏻🤟🏻

0개의 댓글