👏 정말 정말 중요!!! 의도가 분명한 이름은 정말 중요하다!
좋은 이름 만들기에 들어가는 시간 < 절약되는 시간
변수, 함수, 클래스 이름들이 답해야 할 굵직한 질문들
👉 존재 이유 👉 수행 기능 👉 사용 방법
int d; // 경과 시간(단위:날짜)
int daysSinceCreation;
코드의 단순성만이 아닌, 이제는 함축성까지 신경써보자. "코드 맥락"
👉 각 개념에 이름 붙이기
👉 int 배열 → 간단한 클래스
👉 상수 → 명시적인 함수로 상수 감싸기
public List<Cell> getFlaggedCells(){
List<int[]> flaggedCells = new ArrayList<Cell>();
for(Cell cell : gameBoard)
if(cell.isFlagged())
flaggedCells.add(cell);
return flaggedCells;
}
그릇된 단서는 코드의 의미를 흐린다.
널리 쓰이는 의미가 있는 단어를 다른 의미로 사용 X
🤷♀️ 직각삼각형의 빗변을 구현할 때, hp
를 사용하면 안될까요?
❌ hp
, aix
, sco
는 유닉스 플랫폼이나 유닉스 변종을 가리킴
유닉스 : 운영체제의 이름
🤷♀️ 여러 계정을 그룹으로 묶을 때, accountList
라는 이름은요?
❌ 프로그래머에게 List
라는 단어는 특수한 의미. 실제 List
만!!!
흡사한 이름을 사용하지 않도록 주의
🙄...? XYZForEfficientHandingOfStrings
XYZControllerForEfficientStorageOfStrings
유사한 개념은 유사한 표기법을 사용
#핫키 조합 #후보목록
소문자 L과 대문자 O 사용 자제 or 작성자가 글꼴을 바꿔 차이 확인
l
vs 1
O
vs 0
연속적인 숫자를 덧붙인 이름은 금지!
불용어 사용, 주의할 점과 추천 방법!
❌ info
Data
구분 불가능
❌ variable
❌ 표 이름 안에 table
금지
❌ NameString
이름이 문자열이 아닐 경우는 거의 없음 Name
사용
⭕ 모든 지역 변수는 a
모든 함수 인수는 the
를 사용
명확한 관례로 구분하자
프로그래밍은 사회 활동. 발음하기 쉬운 이름을 사용
실제로 회의하거나 설명하는 과정에서 방해가 되기 쉬움.
발음하기 어려운 과도한 축약은 금지하자!!
특히나, 변수나 상수를 코드 여러 곳에서 사용한다면 더 고려하기!
문제 해결에 집중하는 개발자에게 인코딩은 불필요한 정식적 부담이다.
발음 문제, 오타 문제 발생 ↑
헝가리식 표기법 자제
변수를 선언하는 위치와 사용하는 위치가 멀지 않고, IDE는 컴파일 없이 타입 오류 검출이 가능하다. → 헝가리식 표기법과 기타 인코딩 방식은 더 방해가 됨
멤버 변수 접두어
멤버 변수 앞에 _m
이라는 접두어 붙일 필요가 없다.
클래스와 함수는 접두어가 필요 없을 정도로 작아야 마땅
인터페이스 클래스와 구현 클래스
인터페이스 이름에는 접두어를 붙이지 않는 편이 좋다.
인터페이스 클래스 이름과 구현 클래스 이름 중 하나를 인코딩해야 한다면 구현 클래스 이름을 인코딩하자.
😊 해법 영역과 문제 영역을 구분하는 능력을 가져라!
좋은 이름은 단기적인 효과는 물론 장기적인 이익도 보장한다.
여느 코드 개선 노력과 마찬가지로 이름 역시 나름대로 바꿨다가는 누군가 질책할지도 모른다. 그렇다고 코드를 개선하려는 노력을 중단해서는 안 된다.