Ch.7 컬렉션: 중첩을 제거하는 구조화 테크닉

텐저린티·2023년 7월 16일
0

7.1 이미 존재하는 기능을 다시 구현하지 않기

  • 바퀴 재창조 하지마셈
  • 컬렉션을 반복문으로 처리하면, 조건 중첩이 발생하기 쉬움
  • 스트림 같은 선언형 프로그래밍으로 같은 기능을 가독성 있게 구현 가능
    • 반복문, 조건문 없어도 같은 기능 구현
    • 위 구문으로 인해 발생하는 버그도 줄어듬 → 선언형이므로
for (Item each: items) {
		if (each.name.equals("감옥 열쇠")) {
				hasPrisonKey = true;
				break;
		}
}

// 스트림 -> 선언형
boolean hasPrisonKey = items.stream().anyMatch(
		item -> item.name.equals("감옥 열쇠")
);

7.2 반복 처리 내부 조건 분기 중첩

  • 조기 continue
    • 특정 조건하에 남은 로직 처리하지 않고 다음 멤버를 처리
  • 조기 break
    • 특정 조건하에 남은 로직 처리하지 않고 반복문 벗어나기
  • 반복문 처리 내부에서 if 조건이 중첩되면
    • 조기 continue / break 쓰자

7.3 응집도가 낮은 컬렉션 처리

  • 컬렉션 관련 작업 처리 코드가 늘어날 수록 응집도가 낮아짐
  • 컬렉션 처리 캡슐화
    • 일급컬렉션
      • https://github.com/SY97P/Design_Pattern/commit/63915bd02db1fd47c7227f1a6d99c65c02211a75
      • 컬렉션 자료형 인스턴스 변수
      • 컬렉션 자료형 인스턴스 변수가 정상적인 상태를 유지하도록 조작하는 메소드
      • 컬렉션 요소도 변하지 않도록 (부수효과 발생하지 않도록) 해야함
      • 외부로 일급 컬렉션을 전달할 때 컬렉션 변경을 막아야 함
        • unmodifiableList 처럼 요소 추가, 제거 불가한 메소드 사용
profile
개발하고 말테야

0개의 댓글

관련 채용 정보