JAVA 메서드명 네이밍

1 분 소요

코드를 읽는 사람이 코드의 의도를 파악하기 쉽게하며,
코드를 작성한 개발자의 의도를 명확하게 전달하기위해 코드의 네이밍이 중요하다.

다음 메소드를 예를 들어보자.

public List<int[]> getThem() {
    List<int[]> list1 = new ArrayList<int[]>();
    for (int[] x : theList) {
        if (x[0] == 4) {
            list1.add(x);
        }
    }
    return list1;
}

각 이름이 충분한 정보를 제공하지 않아,
코드를 작성한 의도와 목적이 불분명하며 다른 사람이 쉽게 읽을 수 없다.

public List<int[]> getFlaggedCells() {
    List<int[]> flaggedCells = new ArrayList<int[]>();
    for (int[] cell : gameBoard) {
        if (cell.isFlagged()) {
        	flaggedCells.add(cell);
        }
    }
    return flaggedCells;
}

각 이름이 명확하여 다른사람이 코드를 읽기 쉬워진다.


네이밍시 중요한 고려사항

public void calculateTotalPrice(List<Item> items) {}

1.왜 존재해야하는가?
이 메서드는 왜 필요한지 명확하게 정의해야한다.
-> 전달된 상품 목록의 총 가격을 계산하기 위해 존재한다.

2.무슨 작업을 하는가?
이 메서드는 어떤 작업을 수행하는지 이해할 수 있어야한다.
-> 메서드는 상품의 목록을 받아서 총 가격을 계산하는 작업을 수행한다.

3.어떻게 사용하는가?
코드 내에서 이 메서드를 어떻게 사용하는지를 고려하여 이름을 선택해야한다.
-> 주로 상품 목록을 입력으로 받아 총 가격을 반환하는 용도로 사용된다.

public double calculateTotalPrice(List<Item> itemList) {}

따라서, 이 메서드의 이름을 더 명확하게 만들기 위해 다음과 같이 변경할 수 있다.


메서드 명명 규칙

1.메서드 이름은 lowerCamelCase를 사용한다.
2.메서드 이름은 주로 동사 또는 전치사로 시작한다.

  • 동사로 시작하는 메서드이름 예시:
    • getUserByName();
    • setDisplayName();
    • inputData(String input);
  • 전치사로 시작하는 메서드 이름 예시:
    • toString();
    • of()

자주 사용되는 동사

get/set : gettersetter 메서드의 이름으로 사용된다.(자바 빈 규약)

init : 데이터 초기화를 수행하는 메서드의 이름으로 사용된다.

// User클래스 안에 있다면 User 데이터를 초기화하는메서드
public void initData(){...}


is: 맞는지 틀리는지 판단하는 메서드명에 쓰인다.

// 활성화가 되었는지 확인하는 메서드
private boolean isActive() {...} 


has : 데이터를 가지고 있는지 확인하는 메서드명에 쓰인다.

// 데이터를 가지고 있는지 확인하는 메서드
private boolean hasData() {...}


can: 할수 있는지 없는지 확인하는 메서드명에 쓰인다.

// 시작을 할 수 있는지 없는지 확인하는 메서드
public boolean canStart() {...}

is/has/can : boolean 값을 반환하는 메서드의 이름으로 사용된다.


create : 새로운 객체를 생성하고 반환하는 메서드 이름으로 사용된다.

// User 객체를 만든 후 리턴해주는 메서드
public User createUser() {...}


find : 데이터를 찾는 메서드 명에 쓰인다.

// number에 해당하는 Element를 찾아 리턴하는 메서드
public Element findElement (int number){}


to : 해당 객체를 다른 형태의 객체로 변환해주는 메서드 이름으로 사용된다.

// String으로 변환하는 메서드
public String toString();


A-By-B : B를 기준으로 A를 하겠다는 메서드 이름으로 사용된다.

// Name을 기준으로 User를 get하는 메서드
public void getuserByName(String name) {}

위 규칙를 따르면 다른 사람들이 코드를 이해하고 사용하기 더 쉬워지며 코드의 가독성과 유지보수성이 향상된다.

태그:

카테고리:

업데이트:

댓글남기기