알고리즘 문제 푸는 과정에서 변수를 생성할 때 이름을 어떻게 해야 이해가 잘 되고 문제의 집중력이 유지될 수 있는지,
또한, 어플리케이션 개발에 있어 변수 이름, 메서드 이름을 어떻게 해야 이해가 잘 되고 가독성이 좋은지 알고 싶었습니다.
목차
1. 왜 필요할까
2. 기본적인 네이밍 컨벤션
3. 알고리즘 문제 풀이 변수 명명 규칙
4. 변수 명명 규칙
5. 메서드 명명 규칙
👉 코드의 유지보수를 위해
👉 협업자에 대한 배려
👉🏾 분명한 의도 전달
👉 JE22 권장 변수 명명 규칙
카멜 표기법
을 사용합니다.
String userName
문제를 보다보면 주로 나오는 키워드들이 존재합니다.
해당 키워드를 기준으로 이름을 정했습니다.
키워드 | 변수명 | 설명 |
---|---|---|
숫자 | number, n | 순수한 숫자를 가리키는 경우 |
횟수 | count | 몇번 세었는지 횟수를 나타내는 경우 |
인덱스 | idx | 현재 인덱스의 위치를 나타내는 경우, 기준 인덱스를 둘 경우 |
위치 | pt, pos | 현재 위치를 나타내는 경우 |
2개의 위치 | lt, rt | two pointer를 나타내는 경우 |
값 | e, n | 현재 위치의 값을 나타내는 경우 |
키, 값 | k, v | Map 등의 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)
의도가 불분명한 짧은 이름은 어떤 역할의 변수인지 파악하기 힘듭니다.
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)