베어_
TechBear
베어_
전체 방문자
오늘
어제
  • 분류 전체보기 (336)
    • Spring (33)
      • 개념 (13)
      • Security (5)
      • 실습 (1)
      • 토비 스프링 (11)
    • JPA (6)
    • 프로젝트 기록 (24)
    • DB (13)
    • JAVA (18)
    • 알고리즘 (50)
      • 유형정리 (8)
      • Baekjoon (21)
      • LeetCode (18)
    • 디자인패턴 (0)
    • 개발서적 (79)
      • Effective Java (78)
      • 객체지향의 사실과 오해 (1)
    • 독후감 (4)
    • 보안 (2)
    • 운영체제(OS) (53)
      • 공룡책 (53)
    • 컴퓨터 네트워크 (28)
      • 컴퓨터 네트워크 하향식 접근 (23)
    • 자료구조 (1)
    • DevOps (2)
    • 앱 개발 (20)
      • 안드로이드 스튜디오 (20)

블로그 메뉴

    공지사항

    인기 글

    태그

    • jpa
    • 스프링시큐리티
    • BFS
    • dfs
    • 자바
    • 토비스프링
    • java
    • 운영체제
    • 스레드
    • Spring
    • 코드업
    • 함수형인터페이스
    • 백준
    • 자바8
    • 알고리즘
    • 이펙티브자바
    • C++
    • 데이터베이스
    • 스프링
    • leetcode

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    베어_

    TechBear

    개발서적/Effective Java

    [Effective Java] 메서드 시그니처를 신중히 설계하라

    2023. 6. 2. 05:28

    메서드 시그니처를 신중히 설계하라

    1. 메서드 이름을 신중히 짓자.

    • 표준 명명 규칙을 따라야 이해할 수 있다.
    • 같은 패키지에 속한 다름 이름들과 일관되게 이름을 짓자
    • 개발자 커뮤니티에서 널리 받아들여지는 이름을 사용하자
    • 애매하면 자바 라이브러리의 API 가이드를 참조하라

    2. 편의 메서드를 너무 많이 만들지 말자.

    • 메서드가 너무 많은 클래스는 익히고, 사용하고, 문서화하고, 테스트하고,, 유지보수하기 어렵다
    • 아주 자주 쓰일 경우에만 별도의 약칭 메서드를 두자. 확신이 서지 않으면 만들지 말자

    3. 매개변수 목록은 짧게 유지하자.

    • 4개 이하가 좋다

    [과하게 긴 매개변수 목록을 짧게 줄여주는 세 가지 방법]

    1. 여러 메서드로 쪼개고 메서드 각각은 원래 매개변수 목록의 부분집합을 받는다.
      ex ) 지정된 범위의 부분리스트에서의 인덱스를 찾는 경우 List 인터페이스는 부분리스트를 반환하는 subList 메서드와 주어진 원소의 인덱스를 알려주는 indexOf 메서드를 별도로 제공한다. 이 두 가지 메서드를 이용하여 원하는 목적을 이룰 수 있다.
    2. 매개변수 여러 개를 묶어주는 도우미 클래스를 만든다.
      ex ) 카드의 숫자(rank)와 무늬(suit)를 뜻하는 두 매개변수를 항상 같은 순서로 전달하는 메서드가 있으면 이 둘을 묶는 도우미 클래스를 만들어 하나의 매개변수로 주고 받을 수 있다.
    3. 객체 생성에 사용한 빌더 패턴을 메서드 호출에 응용한다. 모든 매개변수를 하나로 추상화한 객체를 정의하고, 클라이언트에서 이 객체의 세터 메서드를 호출해 필요한 값을 설정하게 한다.

    4. 매개변수 타입으로는 클래스보다는 인터페이스가 더 낫다.

    인터페이스(Map)을 사용하면 HashMap, TreeMap 등 어떤 Map 구현체도 인수로 건넬 수 있다.

    5. boolean보다는 원소 2개짜리 열거 타입이 낫다. (메서드 이름상 boolean을 받아야 의미가 더 명확할 때는 예외다)

    public enum TemperatureScale { FAHRENHEIT, CELSIUS }

    Thermometer.newInstance(true) 보다 Thermometer.newInstance(TemperatureScale.CELSIUS)가 훨씬 명확히 알려준다. 또한 새로운 열거 타입을 휩게 추가할 수 있다.

    저작자표시 비영리 변경금지 (새창열림)
      '개발서적/Effective Java' 카테고리의 다른 글
      • [Effective Java] 가변인수를 신중히 사용하라
      • [Effective Java] 다중정의는 신중히 사용하라
      • [Effective Java] 적시에 방어적 복사본을 만들라
      • [Effective Java] 매개변수가 유효한지 검사하라
      베어_
      베어_
      Today I learned | 문제를 해결하는 개발자

      티스토리툴바