노트 목록

규칙 및 리팩터링 패턴 요약

책에서 소개된 규칙 요약

  • 다섯 줄 제한

    • 메서드는 사용하는 데이터 구조를 탐색하는 데 필요한 것보다 더 많은 코드로 구성돼서는 안됩니다.
  • 호출 또는 전달, 한 가지만 할 것

    • 함수 내에서는 객체에 있는 메서드를 호출하거나 객체를 인자로 전달할 수 있지만 둘을 섞어 사용해서는 안됩니다.
  • if문은 함수의 시작에만 배치

    • if문이 있는 경우 해당 if문은 함수의 첫 번째 항목이어야 합니다.
  • if 문에서 else를 사용하지 말 것

    • 프로그램에서 이해하지 못하는 타입(형)인자를 검사하지 않는 한 if문에서 else를 사용하지 마십시오
  • switch를 사용하지 말 것

    • default케이스가 없고 모든 case에 반환 값이 있는 경우가 아니라면 switch를 사용하지 마십시오
  • 인터페이스에서만 상속받을 것

    • 상속은 클래스나 추상클래스가 아닌 오직 인터페이스를 통해서만 받습니다.
  • 순수 조건 사용

    • 조건문의 조건식에서는 변수에 값을 할당하거나 예외를 발생시키거나 I/O와 상호작용해서는 안 됩니다.
  • 구현체가 하나뿐인 인터페이스를 만들지 말 것

    • 구현체가 하나뿐인 인터페이스를 사용하지 마십시오.
  • getter와 setter를 사용하지 말 것

    • 부울이 아닌 필드에 setter나 getter를 사용하지 마십시오
  • 공통 접사를 사용하지 말 것

    • 코드에는 공통 접두사나 접미사가 있는 메서드나 변수가 없어야 합니다.

책에서 소개된 리팩터링 패턴 요약

  • 메서드 추출

    • 한 메서드의 일부를 가져와 고유한 메서드로 추출합니다.
  • 클래스로 타입 코드 대체

    • 열거형을 인터페이스로 변환하고 열거형의 값을 클래스로 만듭니다.
  • 클래스로의 코드 이관

    • 기능을 클래스로 옮기기 때문에 "클래스로 타입 코드 대체"는 클래스의 코드 이관으로 자연스럽게 이어집니다.
  • 메서드의 인라인화

    • 프로그램의 가독성에 더 이상 도움을 주지 않는 메서드를 제거합니다.
  • 메서드 전문화

    • 메서드에서 불필요하고 문제가 있는 일반성을 제거합니다.
  • 삭제 후 컴파일하기

    • 인터페이스와 클래스의 전체 사용 범위를 알고 있는 경우 사용하지 않는 메서드를 인터페이스와 클래스에서 제거합니다.
  • 유사 클래스 통합

    • 일련의 상수 메서드에서 서로 다른 두 개 이상의 클래스를 통합합니다.
  • if 문 결합

    • 동일한 본문을 가진 if문이 이어진 경우 if문의 분기들을 결합해서 중복을 줄입니다.
  • 전략 패턴의 도입

    • if 문을 사용한 분기를 클래스를 인스턴스화하는 것으로 대체합니다.
  • 구현에서 인터페이스 추출

    • 클래스에 대한 종속성을 인터페이스로 바꿉니다.
  • getter와 setter제거하기

    • 기능을 데이터에 더 가깝게 옮겨 getter와 setter를 제거합니다.
  • 데이터 캡슐화

    • 변수와 관련된 불변속성을 지역화하고 응집력을 더 명확히 합니다.
  • 순서 강제화

    • 특정 순서대로 작업을 수행하는 것을 컴파일러가 보장하게 합니다.