11장 변수 이름의 기능
목록
- 11.1 좋은 이름을 위한 고려 사항
- 11.2 특정 타입의 데이터 이름 짓기
- 11.3 이름 규약의 효과
- 11.4 비형식적인 이름 규약
- 11.5 표준 접두사
- 11.6 읽기 쉬운 짧은 이름
- 11.7 피해야 할 변수 이름
이번 장을 읽으면서 10장과 대부분 내용이 비슷하다고 느껴졌다. 10장을 보고 왔다면 가벼운 마음으로 읽고 넘어가면 되겠다.
11.1 좋은 이름을 위한 고려사항
변수 이름을 지을 때 그 이름이 변수가 나타내는 것을 완전하고 정확하게 설명하는지를 가장 중요하게 고려해야 한다. 좋은 이름을 생각해내는 효과적인 기법은 변수가 표현하는 것을 단어로 서술하는 것이다. 종종 서술문 자체가 가장 좋은 변수 이름인 경우가 있다.
나쁜 변수명을 자바로 작성한 예제
x = x - xx;
xxx = fido + salesTax(fido);
x = x + LateFee(x1, x) + xxx;
x = x + Interest(x1, x);
좋은 변수명을 자바로 작성한 예제
balance = balance - lastPayment;
monthlyTotal = newPurchases + SalesTax(newPurchases);
balance = balance + LateFee(customerID, balance) + MonthlyTotal;
balance = balance + Interest(customerID, balance);
위의 코드보다 아래 코드를 읽는 것이 이해하기가 훨씬 편할 것이다. 위의 코드를 이해하기 위해서는 해당 변수들이 무엇을 의미하는지 한참을 고민해야 할 것이다.
최대한 변수가 나타내는 것이 무엇인지를 표현하는 것이 좋다. 이름이 길어지더라도 그것이 모두에게 이익이 될 것이 분명하다.
최적의 이름 길이는 10자에서 16자 사이의 길이다. 하지만 꼭 이에 맞출 필요 없이 더 필요하다면 더 길게 지어도 괜찮다.
total, sum, average, max, min, record, string, pointer와 같은 한정자로 변수의 이름을 만들 경우 이름 끝에 이를 넣는 것이 좋다. 그럴 경우 totalRevenuew와 revenueTotal을 같은 프로그램에서 사용하는 일이 없어질 것이고, 변수가 이미 존재하는지, 어떤 이름으로 존재하는지 찾을 필요도 없을 것이다.
11.2 특정 타입의 데이터 이름 짓기
반복문을 사용할 때 i, j, k와 같은 값을 주로 사용한다. 나 또한 이를 사용해서 반복문을 돌렸는데 반복문이 중첩될 때, i와 j의 위치를 바꿔서 사용하는 경우가 종종 발생한다. 이를 막고, 추후에 코드를 재사용하기 위해서는 i같은 값 대신 의미있는 값을 사용하는 것이 도움이 된다.
상태 변수 이름 또한 마찬가지다. 나는 주로 flag라는 이름으로 사용했는데 이 책에서 바로 이 부분을 지적해서 굉장히 찔렸다. 어떤 값의 flag인지를 명시해 사용하는 것이 이후 코드를 이해할 때 훨씬 편할 것이라는 이 책의 의견에 전적으로 동의하고, 나 또한 그렇게 사용해야겠다.
11.3 이름 규약의 효과
이름 규약의 이점
- 더 많은 것을 당연하게 받아들인다.
- 다른 프로젝트에서도 지식을 활용하는 데 도움을 준다.
- 새로운 프로젝트에서 좀 더 빠르게 코드를 배우게 해준다.
- 이름이 늘어나는 것을 줄여준다.
- 언어의 약점을 보완한다.
- 관련된 항목 사이의 관계를 강조한다.
11.4 비형식적인 이름 규약
이 장에서는 언어별 가이드라인이 나와있는데, 이는 언어 책에 조금 더 자세히 써있으므로 그 부분을 읽어보는 것이 좋을 것 같다.
11.5 표준 접두사
이 부분 역시 프로젝트를 동시에 진행할 때 이부분을 문서화해 정리해 사용하는 것을 추천하고 다음 장의 읽기 쉬운 짧은 이름의 경우도 마찬가지다.
11.6 읽기 쉬운 짧은 이름
요즘 대부분의 프로그래밍 언어에서 이름의 길이에 대햔 규약이 없다. 그러므로 짧은 이름을 사용할 필요가 없어졌지만, 그래도 사용해야 한다면, 따로 문서화를 통해 통일된 짧은 이름을 사용하는 것을 추천한다.
11.7 피해야 할 변수 이름
피해야 할 변수 이름에 대한 가이드라인
- 오해의 소지가 있는 이름이나 축약어를 피한다.
- 유사한 의미가 있는 이름을 피한다.
- 이름은 유사하지만 의미가 다른 변수를 피한다.
- 이름에 숫자를 넣는 것을 피한다.
- 이름에 철자가 틀린 단어가 없도록 한다.
- 영어에서 일반적으로 잘못 표기되는 단어를 피한다.
- 대소문자로만 변수의 이름을 구분하지 않는다.
- 여러 가지 자연어를 사용하지 않는다.
- 표준 데이터형과 변수, 루틴의 이름은 사용하지 않는다.
- 변수가 표현하는 것과 전혀 관련이 없는 이름을 사용하지 않는다.
- 읽기 어려운 문자를 포함하는 이름을 피한다.