이름 잘 지은 변수 하나 열 클래스 안 부럽다.
개발자들은 개발하는데 공수도 많이 들어가지만 아무래도 혼자 일하는 게 아니기 때문에,
또 과거의 나는 남이기 때문에 내 코드를 나중에 내가 이해할 수 있어야 한다.
예로 사과나무에서 사과를 가져오는 함수의 이름을 짓는다고 해보자.
사실 핵심은 getApple이기에 이렇게 지어도 되겠지만 이건 어디까지나
코드를 어느 정도 이해하고 있고 관여했기 때문에 추론할 수 있는 네이밍이다.
처음 보는 사람도 유지보수가 가능하게 네이밍을 해야 한다.
생각하게 만들지 말자
적절한 단어 선정으로 이해시킬 자신이 없다면 있는 그대로 쓰자.
설명이 적은 것보다는 많은 게 그래도 낫다.
적어도 나한테 물어보진 않을 테니
모두가 아는 단어라면 줄이자
일반적으로 업계에서 통용되는 단어라면 줄여도 상관없다.
DataBase를 DB라고 줄인다던지,
Index = i, Function을 fn으로 말이다.
예로 userIndex라는 네이밍을 그대로 사용한다고 했을때 단순 반복문도 아래처럼 길어진다.
for(let userIndex = 0; userIndex < 10; userIndex++){
...코드내용
}
여기에서 userIndex의 유효범위는 저 반복문안에서 한정이기에 i로 축약해서 나타내주어도 충분하다.
아래처럼 말이다.
for(let i = 0; i < 10; i++) {
...코드내용
}
어차피 다른 단어들 때문에 길이가 길어질 테니 이런 부분이라도 줄여주자.
단일 책임의 원칙을 지키자
하나의 함수는 한 가지 일만 시키는 게 함수는 많아지더라도
유지보수나 네이밍 측면에서 유리하다.
사과나무에 가서 사과를 가져오는 함수를
goAppleTreeAndGetApple 이렇게 짓는다고 해보자
물론 이건 극단적인 예일뿐 그냥 그렇다고 치자
위 예시는 많은 기능이 들어가게 되고 네이밍도 어쩔 수 없이 길어진다.
goAppleTree()
getApple()
이번엔 두 가지 함수로 분기되었다.
사과나무에 간다.
사과를 따온다.
훨씬 간단해졌고 문제가 생겼을 때 점검해야 하는 함수가 하나 줄었다.
주석 없이 동작을 예상할 수 있는 이름인가
함수나 변수 이름이 곧 주석이 되는 경우도 더러 있다.
내부 로직을 대변하는 주석은 아닐지라도 대략적인 동작은
유추할 수 있는 주석은 제목으로 대체할 수 있지 않을까.
남들도 쓰는 단어를 선정하자
REST API처럼 API를 사용하다 보면 누구나 이해할 수 있는 단어 조합을 자주 보게 된다.
DELETE : 무언가 삭제요청
UPDATE : 무언가 업데이트 요청
CREATE : 무언가 생성 요청
GET 또는 READ : 무언가 가져온다.
위 CRUD처럼 무언가 수정할 때 Change나 Modify를 사용해도 되지만
개발자들은 UPDATE가 더 이해하기 쉽다.
자주 쓰고 쉽고 남들도 쓰는 단어기 때문이다.
요약하자면
모두가 아는 단어라면 줄이고, 이름은 사용자가 생각하도록 만들지 말고
직관적으로, 남들이 쓰는 단어로 구성하되 하나의 함수는 하나의 역할만 수행하도록 네이밍하자.
내용참고: 유튜브 삼평동연구소
최근댓글