좋은 코드, 나쁜 코드 도서를 요약한 내용입니다.
7장. 코드를 오용하기 어렵게 만들라
코드를 잘못 사용할 수 있는 몇 가지 일반적인 경우는 다음과 같다.
- 호출하는 쪽에서 잘못된 입력을 제공
- 다른 코드의 부수 효과(입력 매개변수 수정 등)
- 정확한 시간이나 순서에 따라 함수를 호출하지 않음
- 관련 코드에서 가정과 맞지 않게 수정이 이루어짐
7.1 불변 객체로 만드는 것을 고려하라
객체가 생성된 후에 상태를 바꿀 수 없다면 이 객체는 불변(불가변) immutable이다. 불변성이 바람직한 이유를 이해하기 위해서는 그 반대인 가변(mutability) 객체가 어떻게 문제를 일으킬 수 있는지 고려해야 한다.
- 가변 객체는 추론하기 어렵다.
- 가변 객체는 다중 스레드에서 문제가 발생할 수 있다.
7.1.1 가변 클래스는 오용하기 쉽다
7.1.2 해결책: 객체를 생성할 때만 값을 할당하라
7.1.3 해결책: 불변성에 대한 디자인 패턴을 사용하라
빌더 패턴
빌더 패턴은 한 클래스를 두 개로 나누는 효과를 갖는다
- 값을 하나씩 설정할 수있는 빌더 클래스
- 빌더에 의해 작성된 불변적인 읽기 전용 클래스
쓰기 시 복사 패턴
7.3 지나치게 일반적인 데이터 유형을 피하라
7.3.1 지나치게 일반적인 유형은 오용될 수 있다
지나치게 일반적인 데이터 유형
public class LocationDisplay {
private final DrawableMap map;
private void markLocationsOnMap(List<List<Double> locations) {
for (List<Double> location : locations) {
map.markLocation(location[0], location[1]);
}
}
}
반응형