[Java] 변수, 메서드 네이밍 규칙

박상혁·2023년 4월 24일
0

Java

목록 보기
10/10

알고리즘 문제 푸는 과정에서 변수를 생성할 때 이름을 어떻게 해야 이해가 잘 되고 문제의 집중력이 유지될 수 있는지,
또한, 어플리케이션 개발에 있어 변수 이름, 메서드 이름을 어떻게 해야 이해가 잘 되고 가독성이 좋은지 알고 싶었습니다.


목차
1. 왜 필요할까
2. 기본적인 네이밍 컨벤션
3. 알고리즘 문제 풀이 변수 명명 규칙
4. 변수 명명 규칙
5. 메서드 명명 규칙


왜 필요할까

👉 코드의 유지보수를 위해
👉 협업자에 대한 배려
👉🏾 분명한 의도 전달


기본적인 네이밍 컨벤션

👉 JE22 권장 변수 명명 규칙
카멜 표기법을 사용합니다.

String userName

알고리즘 문제 풀이 변수 명명 규칙

변수명 짓는 기준

문제를 보다보면 주로 나오는 키워드들이 존재합니다.
해당 키워드를 기준으로 이름을 정했습니다.

기본

키워드변수명설명
숫자number, n순수한 숫자를 가리키는 경우
횟수count몇번 세었는지 횟수를 나타내는 경우
인덱스idx현재 인덱스의 위치를 나타내는 경우, 기준 인덱스를 둘 경우
위치pt, pos현재 위치를 나타내는 경우
2개의 위치lt, rttwo pointer를 나타내는 경우
e, n현재 위치의 값을 나타내는 경우
키, 값k, vMap 등의 key,value 자료구조 사용

변수 명명 규칙

👉 의도를 분명히 밝혀라

b 보다 board로 게시물이라는 의미를 부여하는 것이 보기 좋습니다.

👉 숫자로 바로 표시하는 것보다 변수로 담아서 보여줘라

for(int i = 0; i < boardArr.length; i += 2)

int EvenIndex = 2;
for(int i = 0; i < boardArr.length; i += evenIndex)

👉 맥락을 고려하라

의도가 불분명한 짧은 이름은 어떤 역할의 변수인지 파악하기 힘듭니다.

👉 boolean 변수는?

  • done, error, found, ok, success 같은 전형적인 boolean 변수같은 이름을 사용합니다.

  • 행위를 정확히 설명하는 구체적인 이름이 있다면 processingComplete으로 대체하면 보기 좋습니다.

  • status -> statusOK
    sourceFile -> sourceFileFound
    와 같이, 참이나 거짓의 의미를 명백히 밝힙니다.

  • notFound == false -> found == true
    와 같이, 긍정적인 변수 이름이 읽기 쉽습니다.
    이를 isFound로 접두어 is를 사용하여 조건절을 표현하면 좋습니다. (is를 빼는 것이 더 좋을 때도 있습니다.)

👉 한 줄에 많은 기능이 있다면 나눠라

👉 변수 이름에 자료형이 들어간다면 그냥 복수형으로 표현하라

private List<Integer> numberList = new ArrayList<>();
private List<Integer> numbers = new ArrayList<>();

List를 다른 컬렉션으로 바꿔야 할 때 변수명까지 바꾸지 않아도 됩니다.

자주 쓰는 동사

메서드 명명 규칙

중요한 고려사항

  • 왜 존재해야 하는가
  • 무슨 작업을 하는가
  • 어떻게 사용하는가

👉 메서드 이름은 동사/전치사로 시작하라

기본적으로 동사로 시작합니다.

public void getUserByName()
public void setContent(String content)

다른 타입으로의 전환 및 빌더 패턴을 구현한 클래스의 메서드는 전치사를 사용합니다.

public String toString()
public BoardResponseDto toDtofromBoard(~~)
public User of()

👉 필드 값을 설정하는 메서드는 필드이름_설정값으로 등록하라

// state를 vip로 설정하라
public void registerStateToVip()

👉 테스트 메서드 이름은 메서드명_테스트상태_기대행위 순으로 작성하라

MethodName_StateUnderTest_ExpecteBehavior

@Test
void isPopular_LikeLessThan100_True(){}

자주 쓰는 동사

👉 get/set
자바빈 규약의 엑세스 함수들은 객체지향적인 코드를 작성할 수 없기에 최대한 지양합니다.
[Clean code] getter setter에 대한 고찰
👉 init
데이터 초기화할 때 사용됩니다.

public void initData()

👉 is/has/can
boolean값을 리턴하는 메서드를 작성할 때 사용합니다.
is : 맞는지 틀린지
has : 데이터를 가지고 있는지
can : 할 수 있는지

public boolean isNumber()
public boolean hasData()
public boolean canWrite()

👉 create
팩토리 메서드 패턴을 구현할 때 많이 사용됩니다.

public Board create()

👉 find
데이터 찾을 때 사용됩니다.
주로 JPA에서 사용됩니다.

public Element findElement(int number)

👉 to
객체를 다른 형태의 객체로 변환할 때 사용됩니다.

public String toString()

👉 register
set은 자바빈 규약에 의해 복잡한 연산을 수행할 수 없습니다. 이를 위해 좀 더 지능적인 set이 요구될 때 해당 접두어를 사용합니다.

public String registerTitle()

👉 A-By-B
B를 기준으로 A행동을 하겠다 할 때 사용됩니다.

// id(B)를 기준으로 getUser(A) 하겠다
public void getUserById(Long id)

출처

메서드,클래스 명명규칙
[Java] 명명 규칙
좋은 코드를 위한 자바 메서드 네이밍

profile
개발 노트

0개의 댓글