본문 바로가기
회고와 후기

엘레강트 오브젝트를 읽고 나서

by 방구석개발자 2022. 2. 4.
반응형

 

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=258374007

  • 이 책을 읽고 나서
 엘레강트 오브젝트를 다 보고 나서 역자 서문을 다시 읽었다.
 역자 서문의 글들이 더욱 공감이 갔다.
 저자의 문체가 단정적이고 단호 했고 몇가지 객체지향 원칙들은 공감하기 어려운것 들이 였다.
 호불호 중에서 불호에 가까운 책이이였다.
 그러나 저자가 적어준 원칙대로 코딩할수 있다면 객체지향적인 코드가 될거이라고 생각했다.
 2.6 불변 객체로 만드세요. 원칙은 좋은 장점이 많아서 그래도 실무에 생각이다.
 이책의 원칙을 벗어난 코드를 짤 경우 더욱 유심해야되는 구나 라고 생각된다.
 정적 메소드, 유틸리티 메소드, 가변객체를 실무에서 사용하는 경우가 정말 많은데
 최대한 지양하고 좀 더 객체지향적인 방법이 없는지
 고려하여 코딩할 것이다.
  • 주요내용 정리
1장 출생
1.1 -er로 끝나는 이름을 사용하지 마세요.
 클래스의 이름은 객체가 노출하고 있는 기능에 기반해서는 안됩니다.
 무엇인지(what he is)에 기반해야 합니다.
1.2 생성자에 하나를 주 생성자로 만드세요.
1.3 생성자에 코드를 넣지 마세요.
2장 학습
2.1 가능하면 적게 캡슐화하세요.
2.2 최소한 뭔가는 캡슐화하세요.
2.3 항상 인터페이스를 사용하세요.
2.4 메서드 이름을 신중하게 선택하세요.
2.5 퍼블릭 상수를 사용하지 마세요.
 퍼블릭 상주 대신 하나의 클래스를 이용하세요.
2.6 불변객체로 만드세요.
 불변 클래스로 구현하면 유지보수성을 크게 향상시킬 수 있습니다.
 여기에서 핵심은 절대로 변경 가능한 객체(가변객체)를 만들지 말라는 것입니다.
2.7 문서를 작성하는 대신 테스트를 만드세요.
2.8 모의 객체(Mock)대신 페이크 객체(Fake)를 사용하세요.
2.9 인터페이스를 짧게 유지하고 스마트(Smart)를 사용하세요.
3장 취업
3.1 5개 이하의 public 메서드만 노출하세요.
3.2 정적 메서드를 사용하지 마세요.
3.3 인자의 값으로 NULL을 절대 허용하지 마세요.
 저자가 선호하는 방법으로 NULL을 무시하는 것
 메서드 실행하는 도중에 인자에 접근하면 NPE이 던져지고 메서드 호출자는 자신이 실수했다는 사실을 인지하게 될 것입니다.
3.4 충성스러우면서 불변이거나, 아니면 상수이거나
3.5 절대 getter와 setter를 사용하지 마세요.
 객체지향적 설계로 캡슐화를 사용해서 객체를 만드는 것인데 get,set을 사용하게 되면 캡슐화 원칙을 위반하게 된다.
 (추가로 도메인객체, 엔티티객체의 경우에 한해서 get,set을 안쓰도록 하는게 좋은거 같다.)
3.6 부 ctor 밖에서는 new를 사용하지 마세요.(ctor: 생성자)
 의존성 주입으로 설계하면 테스트 하기 쉽고 유지보수하기 쉽다.
 new를 합법적으로 사용할 수 있는 유일한 곳은 부ctor뿐입니다.
3.7 인트로스펙션과 캐스팅을 피하세요.
4장 은퇴
 이번 장에서 다루는 내용은 논쟁의 여지가 있으며 아직까지 실용적인 수준이라고 말하기는 어렵습니다.
4.1 절대Null을 반환하지 마세요.
 null을 반환하는 객체는 신뢰하기 어렵습니다.
4.2 체크 예외(checked exception)만 던지세요.
4.3 final이나 abstract이거나
4.4 RAII를 사용하세요.
반응형

댓글