엘레강트 오브젝트를 읽었다.

juunini·2021년 2월 8일
1

독서

목록 보기
5/5
post-thumbnail

이 책을 읽으며 "코딩을 이렇게 하세요" 하는 느낌을 많이 받았다.
누군가에게 체계적으로 배운 적 없이 실전에서 부딪히며 경험만 아무렇게나 쌓아온 나에겐 단비같은 책이었다.

코드의 품질이 향상된다는 것은 대부분의 프로젝트에서 비용 절감을 의미합니다.

1장 출생 부분을 펴고 가장 먼저 눈에 들어온 문구였다.
우리는 빨리 할 것을 강요받지, 품질 좋게 하는 것은 뒷전이다.
알면서도 하지 못하는 현실에 마음이 아프지만, 어떻게 하는지 모르면 시간이 주어져도 하지 못하는건 마찬가지다.

그래서 굉장히 열심히 읽었다.

이 책에서 가르쳐준 코딩 스타일은 대략 이렇다.

  • 객체는 존중받을 수 있는 이름을 붙여줄 것 (-er 금지)
  • 생성자에 코드를 넣지 말 것
  • 빌더 메서드는 명사로 지을 것
    • 빌더의 리턴값은 void 일 수 없다
  • 조정자 메서드는 동사로 지을 것
    • 조정자는 항상 리턴값이 void 일 것
  • Boolean을 리턴하는 경우는 형용사로 지을 것
  • public constant를 사용하지 말 것. 대신 클래스를 받아서 사용하게 할 것
  • 불변 객체를 사용할 것
  • 문서를 작성하는 대신 테스트를 만들기
    • Mock 대신 Fake를 이용할 것
    • 인터페이스를 짧게 유지하고 smart를 사용할 것
  • 4개 이하를 캡슐화 할 것
  • 5개 이하의 public 메서드만 노출할 것
    • private 메서드는 많아도 상관없음
  • 정적 메서드 금지
    • 싱글턴 패턴은 정적 메서드와 다를 바 없다
  • 인자의 값으로 null 금지
  • null을 리턴하는 것도 금지
  • getter와 setter를 사용하지 말 것
  • 주 생성자나 메서드 안에서 new를 사용하지 말 것
  • 인트로스펙션과 캐스팅을 하지 말 것
  • 예외(exception)를 체이닝 할 것
  • 예외 복구는 최상단에서 단 한번만 할 것
  • 파일, 스트림, 데이터베이스 커넥션 등 실제 리소스를 사용하는 모든 곳에서 RAII를 사용할 것 (마지막에 파괴자를 호출)

나는 아마 위에 정리해둔 내용들을 종종 보러올 것 같다.

책에서는 왜 그렇게 사용해야 하는지, 이렇게 사용하지 않으면 어떤 문제가 발생하는지, 우리가 얼마나 많은 안티패턴에 둘러싸여 있는지 하나하나 설명을 해준다.

그리고 인상깊었던 부분은 FP에서도 불변성을 강조하며 상태가 변하면 안된다는 개념의 설명을 봤었는데, OOP를 설명하는 이 책에서도 불변 객체와 불변성을 강조하고 있다는 점이다.

협업하다보면 종종 그냥 편하니까, 자기가 보기에 직관적이라서, 메모리 문제 핑계를 대는 등의 이유로 가변 객체를 사용하는걸 종종 보게 된다.
하지만 아직 나는 이해도가 높지 않아서인지 그런 사람에게 왜 가변 객체를 쓰면 안되는지, 불변 객체를 써야 하는 이유에 대해 설명을 못할 것 같다.

조만간 불변 객체를 써야 하는 이유를 자세히 찾아 정리해서 글을 써봐야겠다.

생각해볼 부분도 많이 제공해주었고, 코딩하는 방법을 더 자세히 알려준 선생님같은 책이었다.

profile
Full StackOverFlow

0개의 댓글