////
Search
Duplicate
🎰

2. 이름에 정보담기

변수, 메소드, 클래스의 이름을 결정할 때는 이름에 정보를 담아내야 한다.
좋은 이름을 선택하면 생각보다 많은 의미와 정보를 전달할 수 있다.
이 장은 다음과 같은 여섯 개의 주제로 나누어져있다.
특정한 단어 고르기
보편적인 이름 피하기
추상적인 이름 대신 구체적인 이름 사용하기
접두사 혹은 접미사로 이름에 추가적인 정보 덧붙이기
이름이 얼마나 길어져도 좋은지 결정하기
추가적인 정보를 담을 수 있게 이름 구성하기

특정한 단어 고르기

매우 구체적인 단어를 선택하여 추상적인 단어를 피하는 것이다. 명확성이 중요하다.
get과 같이 여러 뜻을 가질 수 있는 단어를 선택하는 것은 가독성을 해치는 행위다.
재치있는 이름보다 명확하고 간결한 이름이 더 좋다.

보편적인 이름 피하기

tmp, retval, foo같은 축약어나 의미없는 단어대신 개체의 값이나 목적을 정확하게 설명하는 단어를 골라야 한다.
추상적이거나 축약어는 정보를 제대로 담고 있지 않다. 대신 구체적으로 설명하는 이름을 사용하라.
tmp같이 보편적인 단어가 더 좋은 설명이 되는 경우도 물론 있다.
swap 메소드의 수도 코드를 살펴보면 tmp가 사용되는 경우가 잦은데, 이처럼 메소드에서 해당 변수에게 요구하는 의미가 명확한 경우에는 사용해도 좋다.
tmp라는 이름은 대상이 짧게 임시적으로 존재하고 임시적 존재 자체가 메소드에 있어서 변수의 가장 중요한 역할일 때 한해서 사용해야 한다.
tmp, it, retval 같은 보편적인 이름을 사용하려면 꼭 그렇게 해야 하는 이유가 있어야 한다.

추상적인 이름보다 구체적인 이름을 선호하라

변수나 함수 혹은 다른 요소에 이름을 붙일 때, 추상적인 방식이 아닌 구체적인 방식으로 묘사하라.

추가적인 정보를 이름에 추가하기

변수의 이름은 작은 설명문이다. 이름 안에 끼워 넣은 추가 정보는 변수가 보일 때마다 우리에게 전달된다.
사용자가 반드시 알아야 하는 변수와 관련한 중요한 정보를 추가적인 단어로 만들어서 전달하는 것이 좋다.
단위를 포함하는 값들
시간의 양이나 바이트의 수와 같은 수치를 담고 있다면 변수명에 단위를 포함시키는 것이 도움이 된다.
다른 중요한 속성 포함하기
prefix를 유용하게 사용하라, 변수의 맥락을 파악하고 맥락을 표현할 수 있는 정보를 이름에 담아내어라

이름이 얼마나 길어져도 괜찮은지 결정하기

변수명을 선택할 때, 이름이 지나치게 길어져선 안 된다는 룰이 암묵적으로 존재하지만 이는 좋은 룰은 아니다.
나는 변수명이 적당히 길어도 된다고 생각함.. 단어 5~6개 정도까진 괜찮은듯..
제한적인 범위에서는 짧은 이름이 괜찮다.
제한적인 범위에서 사용되는 변수는 거기서 사용되고 끝날 것이기 때문에 길 필요가 없다. 여러 곳에서 사용된다면 변수의 이름만 보고도 이것이 어떤 맥락을 제공하는지 알아야 한다.
긴 이름 입력하기 - 더 이상 문제가 되지 않는다.
더 이상 긴 이름을 입력하는 것은 긴 이름을 사용하지 말아야할 이유에 해당하지 않는다. IDE가 많이 발전했기 때문이다.
약어와 축약형
특정 도메인에 국한된 의미를 가진 약어 사용은 좋은 생각이 아니다. 가급적이면 약어를 쓰지말라는 뜻이다..!
불필요한 단어 제거하기
다음과 같이 경우에 따라서는 정보 손실 없이 변수의 길이를 줄일 수 있다.
ConvertToString()ToString()
DoServeLoop()ServerLoop()

추가적인 정보를 담을 수 있게 이름 구성하기

_, -, 대문자를 적절히 사용하면 이름에 더 많은 정보를 담을 수 있게 된다.

요약

특정한 단어를 사용해라
예를 들어 상황에 따라 Get 대신 FetchDownload를 사용하는 것이 더 나을 수 있다.
꼭 그래야 하는 이유가 없다면 tmpretval과 같은 보편적인 이름의 사용을 피하라.
대상을 자세히 묘사하는 구체적인 이름을 이용하라.
ServerCanStart()CanListenOnPort()에 비해서 의미가 모호하다.
변수명에 중요한 세부 정보를 덧붙여라.
예를 들어 밀리초의 값을 저장하는 변수 뒤에 ms를 붙이거나 이스케이핑을 수행하는 변수의 앞에 raw를 붙이는 것이다.
사용 범위가 넓으면 긴 이름을 사용하라
여러 페이지에 걸쳐서 사용되는 변수의 이름을 하나 혹은 두 개의 짧은 문자로 구성해 의미를 알아보기 힘들게 짓지 마라
다만 적은 분량에서 잠깐 사용되는 변수명은 짧을수록 더 좋다.
대문자나 밑줄 등을 의미 있는 방식으로 활용하라
예를 들어 클래스 멤버를 로컬 변수와 구분하기 위해서 뒤에 _를 붙일 수 있다.