techbook-study / reading-after-work

Day By Day Reading a Book
0 stars 0 forks source link

2023-06-08 퇴근 후 독서 #4

Closed limyohwan closed 1 year ago

limyohwan commented 1 year ago

독서 내용 간략 정리

limyohwan commented 1 year ago

이펙티브 자바

  1. null이 아닌 빈 컬렉션이나 배열을 반환하라
private final List<Cheese> cheesesInStock = ...;

public List<Cheese> getCheeses() {
    return new ArrayList<>(cheesesInStock);
}

//or
public List<Cheese> getCheeses(){
    return cheesesInStock.isEmpty() ? Collections.emptyList() : new ArrayList<>(cheesesInStock);
}
  1. 지역 변수의 범위는 최소화하라, 변수를 바로 초기화 할수 없는 상황 일시 최대한 가깝게 위치하게 해야함
  2. 전통적인 for문 보다는 for-each문(enhanced for문)을 사용해라
  3. float 과 double은 근사치를 계산하는 타입이므로 정확한 소수자리 계산이 필요할 시 BigDemical을 사용해야함
  4. 박싱된 타입(wrapper 타입) 보다는 기본 타입을 사용하라, 기본적으로 기본타입이 간단하고 빠름
    public static void main(String[] args) {
    Long sum = 0L
    for(long i = 0; i <= Integer.MAX_VALUE; i++){
        sum += i; //박싱과 언박싱이 일어나며 엄청난 성능 저하를 일으킴
    }
    }
DKKwag commented 1 year ago

오브젝트

객체지향 패러다임 관점에서 제일 중요한 것은, 책임(Responsibility), 역할(role), 협력(collaboration) 이다.

  1. 협력 - 어떤 객체가 다른 객체에게 무엇인가를 요청 하는 것

    • 메시지 전송(message sending) - 객체 사이의 협력을 위해 사용할 수 있는 유일한 커뮤니케이션 수단
  2. 책임 - 협력에 참여하기 위해 객체가 수행하는 행동

    • 객체의 책임을 크게 두가지 범주로 나누어 세분화 한다. 하는것(doing), 아는것(knowing)
    • 크레이그 라만 - "객체지향 개발에서 가장 중요한 능력은 책임을 능숙하게 소프트웨어 객체에 할당하는 것"

CRC카드에 대해서 알면 설계할때 굉장히 편리해짐 - 각자 찾아보자!

  1. 책임 할당
    • 가장 기본적인 방법중 하나로 책임을 수행하는 데 필요한 정보를 가장 잘 알고 있는 전문가에게 그 책임을 할당
    • 정보전문가 패턴(INFORMATION EXPERT PATTERN)
    • 물론 응집도와 결합도 관점에서 정보 전문가가 아닌 다른 객체에게 책임을 할당하는게 더 적절한 경우가 있으나, 기본적인 전략은 책임을 수행할 정보전문가를 찾는 것이다. -> 정보 전문가에게 책임을 할당하는 것만으로도 상태와 행동을 함께 가지는 자율적인 객체를 만들 가능성이 높다.
segyong56 commented 1 year ago

클린코드 7장, 오류처리

ps. 조금 더 공부가 필요함..다시 한번 더 읽고 정리해야함