좋은 이름 하나, 열 함수 안 부럽다.
변수나 함수 이름을 잘 짓는 것은 단순한 센스가 아니라 연습과 원칙에서 비롯됩니다.
타이핑보다 이해하기 쉬운 이름을 선택하자
타이핑이 편하다고 줄이면 안 됩니다. 결국 읽는 사람이 힘들어지기 때문입니다.
나쁜 예
int blkUsrCnt = 5;
좋은 예
int blockedUserCount = 5; // 차단된 사용자 수
blkUsrCnt 라고 적으면 짧아서 편하기는 합니다. 하지만 코드를 읽는 다른 사람(미래의 나 포함) 은 다시 해석해야 하는 비용이 발생합니다. 줄인다고 해서 큰 성능 차이는 없지만, 의도를 명확히 드러내는 것이 더 중요합니다.
스코프 범위에 따라 이름 길이를 조절하자
짧은 범위에서는 짧게, 넓은 범위에서는 명확하게 해주는 것이 좋습니다.
public void printUserNames(List<String> userNames) {
for (int i = 0; i < userNames.size(); i++) { // 짧은 스코프 - OK
System.out.println(userNames.get(i));
}
}
public class UserService {
private List<String> userNames; // 넓은 스코프 - 명확한 이름 사용
}
루프 안에서만 쓰는 변수는 i, j 처럼 짧게 사용해도 괜찮습니다. 하지만 클래스 멤버 변수처럼 여러 곳에서 참조되는 userNames 처럼 무슨 의미인지 명확히 드러나야 합니다.
정확한 역할을 설명하는 이름을 짓자
이 함수가 무슨 일을 하는지 이름만 봐도 알 수 있게 만들어야 합니다.
나쁜 예
public void handleUserData() {
// 내부에서 get + update 둘 다 함
}
좋은 예
public void getUserData() {
// 사용자 데이터 조회
}
public void updateUserData() {
// 사용자 데이터 갱신
}
handle, do, manage 같은 모호한 단어는 피하는 것이 좋습니다. 대신 정확히 무엇을 하는 함수인지 이름에 담아야 합니다.
또한 함수는 하나의 책임만 갖는 것이 이상적입니다. 두 가지 일을 한다면 두 개의 함수로 나누는 것이 좋습니다.
이름으로 의도를 설명하자
구현이 아니라 의도를 읽을 수 있는 코드가 최고의 코드라는 말이 있듯이 개발자의 의도가 한 번에 나타나야 좋은 코드입니다.
String reversed = reverse(string); // 구현만 보면 reverseString을 한 것뿐
String highlighted = highlightText(string); // 의도를 이름으로 드러내자
두 함수가 같은 구현이라도, highlightText() 라고 이름을 지으면 "강조하는 용도구나!"라는 개발자의 의도가 드러납니다.
이처럼 함수나 변수 이름으로 목적을 설명하면 나중에 유지보수나 협업할 때 훨씬 직관적입니다.
주석보다 명확한 코드로 설명하자
주석을 사용하면 이 함수가 어떠한 기능을 하는지 이해할 수 있게 설명할 수 있습니다.
하지만 주석이 필요한 정도로 이해하기 어려운 코드는 처음부터 명확한 변수명이나 함수명으로 개선하는 것이 더 좋습니다.
나쁜 예
int flags = 0x10; // 로드 완료 플래그입니다.
좋은 예
public static final int LOADED_FLAG = 0x10;
int flags = LOADED_FLAG;
자바로 설명하자면 숫자 상수는 반드시 final 키워드와 함께 이름을 붙여 재사용합니다.
'CS' 카테고리의 다른 글
웹서버, 웹 애플리케이션 서버 (0) | 2025.05.16 |
---|---|
CI, CD, 파이프라인 (0) | 2025.03.24 |
JAR , WAR 차이 (1) | 2025.03.07 |
Maven, Gradle 이란 (0) | 2025.02.26 |
Tomcat 이란 (3) | 2025.01.03 |