좋은 코드를 위한 네이밍

이태곤·2024년 1월 20일
0

CS

목록 보기
14/23

1. 의도가 분명한 코드 vs 의도가 모호한 코드

  • 개발 업무는 혼자가 아닌 팀으로 진행되기 때문에, 협업을 위해서는 명료한 네이밍이 필수라고 생각한다.
    코드를 작성한 의도와 목적이 명확해야 하며 다른 사람이 쉽게 읽을 수 있어야 한다.
  • 의도가 모호한 코드: 함수명인 getThem을 읽고, 어떤 기능을 담당하고 있는 메서드인지 분명하지 않다.
    또한 변수명 list1 또한 어떤 데이터를 담고있는지 알 수 없다.
public List<int[]> getThem() {
    List<int[]> list1 = new ArrayList<int[]>();
    
    return list1;
}
  • 의도가 분명한 코드: 메서드명만 보고도 유저 반환 기능을 담당하는 메서드임을 알 수 있고, 변수명 users 또한 유저들을 가지고 있는 변수임을 알 수 있다.
public List<int[]> getUsers() {
    List<int[]> users = new ArrayList<int[]>();
   
    return users;
}
  • 네이밍시 중요한 고려사항: 아래 해당하는 3가지 내용을 포함하고 있는 네이밍을 고려해야 한다.
    또한, 이름만으로도 언제 이 메서드를 호출해야 하는지 의미를 파악할 수 있도록 작성하도록 해야 한다.

    1. 왜 존재해야 하는가
    2. 무슨 작업을 하는가
    3. 어떻게 사용하는가
  • Example

public List<Piece> findUserById(Color color){}
// 왜 존재해야 하는가 - Id에 대해 존재하는 user를 찾기 위해서
// 무슨 작업을 하는가 - Id에 맞는 user를 반환한다.
// 어떻게 사용하는가 - Id가 1번인 user의 이름을 반환한다.

2. Programming Naming Conventions

  • 🐪 메서드 이름을 카멜케이스 (Camel Case)로 작성: 단어 연결 시 첫 글자(소문자)를 제외한 각 단어의 첫 글자를 대문자로 표기하는 명명 규칙으로 변수 또는 함수 이름을 지을 때 사용한다.

    • myCarNumber
    • geUserName
  • 파스칼케이스 (Pascal Case): 첫 단어의 첫 글자도 대문자로 표기하는 명명 규칙으로, 주로 클래스나 타입의 이름을 지을 때 사용된다.

    • MyClass, UserController
  • 메서드 이름은 동사/전치사로 시작한다.

    • public void getUserByName(){}
    • public void setDisplayName(){}
    • public void inputData(String input){}
    • public String toString(){}
  • JUnit 테스트 메소드 이름에 언더스코어가 표시되어 이름의 논리 컴포넌트를 구분하고 각 컴포넌트는 lowerCamelCase로 작성된다.

    • MethodName_ExpectedBehavior_StateUnderTest
    • 예시: void isAdult_False_AgeLessThan18(){}
  • 메서드 이름으로 자주 사용되는 동사
    • get/set
    • init: 데이터를 초기화하는 메서드 명
    • is/has/can: boolean 값을 리턴한다.
      • public boolean isNumber(){}
      • public boolean hasData(){}
      • public boolean canOrder(){}
    • create: 객체를 생성하는 메서드 명
    • find: 데이터를 찾는 메서드 명
    • to: 해당 객체를 다른 형태의 객체로 변환해주는 메서드 명

[출처]

https://tecoble.techcourse.co.kr/post/2020-04-26-Method-Naming/

4개의 댓글

comment-user-thumbnail
2024년 1월 23일

public string getKimchi (string userName) {
return userName;
}

1개의 답글
comment-user-thumbnail
2024년 2월 12일

제가 네이밍의 중요성을 언급할 때는 무시하시더니 뒤에서 이런 글을 쓰시네요 ;;
그렇게 안 봤는데 어마무시한 분이시네요 ;;

1개의 답글