본문 바로가기
반응형

전체 글145

[엘레강트 오브젝트] 2.4 메서드 이름을 신중하게 선택하세요 이 내용은 엘레강트 오브젝트 를 읽으면서 정리한 내용을 포함하고 있습니다. 들어가기 빌더는 명사다 조정자는 동사다 빌더와 조정자 혼합하기 Boolean 값을 결과로 반환하는 경우 정리 관련해서 참고해볼 내용 들어가기 빌더(builder)란 뭔가를 만들고 새로운 객체를 반환하는 메서드를 말한다. Java의 Builder 패턴을 말하는 것은 아니다. 빌더 메소드는 항상 뭔가를 반환하고, 이름은 명사로 표현한다. 빌더 메소드의 의미를 좀 더 풍부하게 설명하기 위해서 형용사 활용 가능하다. 빌더의 예 int pow(int base, int power); float speed(); Employee employee(int id); String parsedCell(int x, int y);객체로 추상화한 엔티티를 수.. 2023. 3. 1.
[엘레강트 오브젝트] 2.3 항상 인터페이스를 사용하세요 이 내용은 엘레강트 오브젝트 를 읽으면서 정리한 내용을 포함하고 있습니다. 객체의 결합 객체의 분리 연습해보기 정리 관련해서 참고해볼 내용 객체의 결합 객체는 다른 객체들과 의사소통하면서 작업을 지원하고, 다른 객체들에게 도움을 제공한다. 결합이 필요한 부분은 다른 누군가가 객체의 서비스를 필요로 하기 때문이다. 이렇듯, 객체들이 서로를 필요로 하기 때문에 결합한다. (coupled) 객체들의 수가 수십 개를 넘어가면서부터 객체 사이의 강한 결합도가 심각한 문제가 된다. 이러한 결합도 문제는 유지보수성에 영향을 미치게 된다. 객체의 분리 애플리케이션 전체를 유지보수 가능하도록 만들기 위해서는 객체를 분리헤야 한다.(decouple) 기술적인 관점에서 객체 분리란 상호작용하는 다른 객체를 수정하지 않고도 .. 2023. 3. 1.
[엘레강트 오브젝트] 2.2 최소한 뭔가는 캡슐화하세요 이 내용은 엘레강트 오브젝트 를 읽으면서 정리한 내용을 포함하고 있습니다. 다음 목차로 진행합니다. 캡슐화 연습해보기 실습 정리 캡슐화 프로퍼티가 없는 클래스는 객체지향 프로그래밍에서 정적 메소드와 유사 아무것도 캡슐화하지 않는 방식은 바람직하지 않다. 이러한 클래스들은 아무런 상태와 식별자도 가지지 않고 오직 행동만을 포함한다. 연습해보기 실행으로부터 인스턴스 생성을 고립시켜야 한다. 오직 생성자에서만 new 연산자를 허용해야 한다. 좌표가 없는 객체는 무언가를 캡슐화해야 한다. 객체는 자기 자신을 식별할 수 있도록 다른 객체들을 캡슐화해야 한다. 실습 로또 예를 들어서 확인해보도록 하겠다. 로또 6개의 번호 중 하나의 번호를 책임지는 객체가 있다. 아래와 같은 객체는 필요할까? 해당 객체는 식별자나 .. 2023. 3. 1.
[엘레강트 오브젝트] 2.1 가능하면 적게 캡슐화하세요 이 내용은 엘레강트 오브젝트 를 읽으면서 정리한 내용을 포함하고 있습니다. 다음 목차로 진행합니다. 객체의 캡슐화 객체의 집합체 연습해보기 관련해서 참고해볼 내용 객체의 캡슐화 내부에 캡슐화된 객체 전체를 가리켜 객체의 상태(state) 또는 식별자(identity) 아래는 Cash의 상태 또는 식별자를 나타내는 필드로, Cash의 집합체 class Cash { private Integer digits; private Integer cents; private String currency; } 동일한 값의 달러, 센트, 통화를 캡슐화하는 Cash 클래스의 두 객체는 서로 동일합니다. Cash x = new Cash(29, 95, "USD"); Cash y = new Cash(29, 95, "USD"); a.. 2023. 3. 1.
[엘레강트 오브젝트] 1.3 생성자에 코드를 넣지 마세요 이 내용은 엘레강트 오브젝트 를 읽으면서 정리한 내용을 포함하고 있습니다. 다음 목차로 진행합니다. 생성자의 역할 생성자의 코드가 없어야 하는 이유 생성자의 역할 생성자는 객체의 초기화를 시작하는 장소 초기화 시 생성자안에는 코드가 없어야 하고 인자를 건드려서는 안된다. 코드가 필요하다면 인자들을 다른 타입의 객체로 감싸거나 가공하지 않은 형식으로 캡슐화한다. 생성자는 코드가 없어야하고 오직 할당문만 포함해야 한다. 생성자의 코드가 없어야 하는 이유 문자열을 정수로 파싱하는 클래스가 있다고 가정하고 예시를 통해 알아보자. 아래 코드는 intValue() 를 호출할 때마다 매번 텍스트를 정수로 파싱한다. class StringAsInteger implements Number { private String .. 2023. 2. 19.
[엘레강트 오브젝트] 1.2 생성자 하나를 주 생성자로 만드세요. 이 내용은 엘레강트 오브젝트 를 읽으면서 정리한 내용을 포함하고 있습니다. 다음 목차로 진행합니다. 생성자 올바른 클래스 설계 연습해보기 생성자 순서 고려 정리 생성자 새로운 객체에 대한 진입점 객체를 생성할 때 호출하는 메서드 제공된 인자를 사용해서 캡슐화하고 있는 프로퍼티를 초기화 public class LottoNumber { private final int number; public LottoNumber(final int number) { this.number = number; } } 생성자 예시 올바른 클래스 설계 클래스에는 많은 수의 생성자와 적은 수의 메서드를 포함 생성자의 개수가 더 많을수록 클래스는 더 개선되고, 사용자 입장에서 클래스를 더 편하게 사용 메서드가 많아지면 클래스의 초점이 .. 2023. 2. 19.
반응형