이 포스팅을 보기 전에 사전에 알아야 할 것들이 있습니다! 정수, 문자열과 같은 다양한 자료형에 대해 가벼운 이해가 있는 분들이라면 문제 없이 읽으실 수 있을 것 같습니다 :)
변수가 없는 세상에 개발자가 존재할 수 있을까요? 변수가 없다면 프로그램이 작동하는 과정에서 정보를 기록하고 추적할 방법은 없습니다.
변수는 프로그래밍에서 아주 기본적인 부분이기 때문에, 변수를 악용하는 수많은 방법을 배우는 것은 매우 즐거운 일이 될 것입니다. 이번 챕터에서는 그중에서도 정말 악명 높고 딱 봐도 안 좋은 예제들을 살펴보도록 합시다.
변수, 불명확한 이름 사용하기! 직관적인 이름은 쓸모가 없다.
컴퓨터 과학에서 어려운 세 가지가 있다. 바로 캐시 무효화, 변수명 짓기, off-by-one 에러다. - Phil Karlton
많은 개발자들에 의해 널리 인용되는 이 문구는 당신에게 엄청나게 멋진 예감을 안겨 줍니다. 즉, 개발자들이 변수명을 정하는 데 어려움을 느낀다면, 잘못 작성하기도 매우 쉽다는 의미죠.
- 모두 의미 없이 두어라
대부분의 프로그래밍 언어에서 변수명은 개발자가 원하는 길이로 설정할 수 있습니다. 그런데 대체 왜 편집기에서 긴 변수명을 치느라 시간을 낭비해야 할까요?
이걸 한 번 생각해 봅시다. amount라는 이름의 6자짜리 변수가 있습니다. 만약 당신이 이 변수를 프로그램 전체에서 20번을 입력해야 한다면, 무려 120번이나 키보드를 두드려야 한다는 의미입니다. 그런데 만약 이걸 a라는 변수로 줄인다면, 매번 5번의 키보드 입력을 줄일 수 있고, 다 합치면 100번이나 키보드 입력을 줄일 수 있다는 이야기입니다. 그렇게 아낀 시간에 무엇을 더 이룰 수 있는지 생각해 봅시다.
잘 생각해 보면 별 의미 없는 힌트를 변수명에다 남겨 놓는 위험을 감수할 필요가 없습니다. 훌륭한 동료라면 a라는 변수를 보고 amount를 떠올릴 수 있을지도 모르죠. 그러니 그냥 아무 알파벳이나 쓰면 됩니다. 이렇게 하고도 알파벳은 25개나 남았습니다.
이 전략의 장점은 바로 한계가 없다는 점에 있습니다. 26개의 알파벳을 모두 써버렸다면? 그 뒤에 다른 문자를 하나 덧붙이면 됩니다. aa나 x1 같은 것이면 충분합니다.
※ 주의하기!
최근 개발 환경에서 많은 IDE가 자동 완성 기능을 제공하기 때문에, 변수명을 줄여서 쓸 필요가 없습니다. 코드 리뷰어들은 다른 사람들이 이 변수가 무엇을 의미하는지 이해하기 위해서 앞의 코드를 거슬러 올라갈 필요가 없도록, 변수가 제대로 된 의미를 전달해야 된다고 이야기합니다. 제대로 된 의미가 담긴 변수를 사용한다면, 동료들은 코드가 무슨 일을 하는지에만 집중할 수 있습니다.
아래 예시를 살펴봅시다.
이 코드는 면적이 10,000 제곱킬로미터보다 큰 나라별 인구 밀도를 계산하고 있습니다. 그리고 결과를 map에다 집어넣습니다. 만약 이 코드를 다음처럼 더 명확한 변수명과 함께 작성한다면 더 이해하기 쉬울 것입니다.
리뷰어들은 특별한 경우에는 변수명을 줄이는 데 예외를 두기도 합니다. 예를 들어, 반복문을 사용할 때 index 변수는 i나 n으로 쓰는 것을 허용하는 것이 일반적입니다. “일반적으로 작성하는 방식을 따르라”는 말을 듣게 될 수도 있습니다.
하나 더 살펴볼 것은, minimumArea가 변수가 아닌 상수로 작성되었다는 사실입니다. 어떤 값이든 프로그램 전체에서 변하지 않는 것이라면 상수로 정의하는 것이 좋습니다. 이 방법을 통해서 실수로 그 값이 변경되는 것을 피할 수 있습니다.
- 변수명을 대충 지어라
개발자들은 문제 해결사입니다. 만약 변수명을 정하는 것이 어려운 문제라면, 해결책은 명확하죠. 바로 그 일을 하는 데 들이는 시간을 최소화하면 됩니다. 이름을 아무렇게나 지어 버리고, 작명 과정에 별다른 노력을 쓰지 않으면 문제는 해결이 됩니다. 어떻게 하면 최대한 시간을 절약할 수 있을까요?
한 가지 방법은 변수의 타입을 변수명으로 그대로 가져다 쓰는 것입니다. 다음의 변수명이 얼마나 충격적으로 무의미한지 살펴봅시다.
이제 누군가 리뷰를 한다고 생각해 봅시자. 그들은 “무슨 number란 말이야?” 혹은 “그래. 이건 flag고, Boolean 타입이네. 그래서 이게 뭘 표시하고 싶다는 거지?”라고 소리 지르게 될 것입니다.
마음이 따뜻해지는 게 느껴지지 않나요? 쓸모없는 변수명을 짓는 다른 방법은 이름을 모호하게 짓는 것입니다. 정수형 변수명을 count로 짓거나 서브루틴을 doProcess와 같이 짓는다면 성공적으로 다른 사람들을 짜증나게 할 수 있습니다.
《동료들 뒷목 잡게 만드는 나쁜 프로그래밍 습관》
예스24 교보문고 알라딘 인터파크
'IT 정보' 카테고리의 다른 글
주니어 개발자들, 깔끔한 코드를 쓰고 싶다면 꼭 읽어보세요! (0) | 2020.12.10 |
---|---|
[게임 기획자 이야기⑤] 그렇게 바라던 기획팀장이 되었지만 (0) | 2020.11.24 |
[게임 기획자 이야기④] 기획 5년차는 질풍노도의 시기 (0) | 2020.11.23 |