‘Saving Keystrokes’를 멈춰라. 3초만 투자해 3시간을 절약한다
Source: Dev.to

우리 모두 그런 경험을 해봤을 겁니다.
당신은 몰입 상태에 있습니다. 논리는 흐르고, 음악은 크게 울리며, 맵 함수 안에서 사용자 객체를 담을 임시 변수가 필요합니다.
updatedUserObject 라고 입력할 수도 있겠죠.
하지만 그건 17자입니다.
더 빠른 방법이 뭘까요? u.
u는 한 글자입니다. 효율적이고, 빠릅니다. 지금 u가 무엇을 의미하는지 정확히 알고 있기 때문에 입력하고, 코드가 컴파일되고, 생산성을 느낍니다.
당신은 미래의 자신을 위한 함정을 이미 놓은 것입니다.
이것이 주니어 함정이라 불리는 키스트로크 절약입니다.
이 함정은 “타이핑 속도가 소프트웨어 엔지니어링의 병목이다”라는 거짓에 기반합니다.
그렇지 않습니다. 병목은 읽기 이해력입니다.
의도 사전
data, item 같은 일반적인 이름이나 x 같은 한 글자를 사용할 때, 우리는 정보를 숨기고 있습니다. 논리에서 컨텍스트를 빼앗는 것이죠.
x와 d가 가득한 함수를 이해하려면, 독자(아마도 6개월 뒤의 당신)는 무슨 일이 일어나고 있는지 파악하기 위해 프로그램 전체 로직을 머릿속에 떠올려야 합니다. 당신은 타이핑 0.5초를 절약하기 위해 만든 퍼즐에 팀원의 인지 RAM을 태우고 있는 겁니다.
변수 이름은 단순한 라벨이 아니라 의도의 정의입니다.
주니어 함정: “키스트로크 절약”
“타이핑이 더 빠르니까
updatedUserObject대신u라고 이름 짓겠어. 지금은 무슨 뜻인지 알니까.”
프로의 움직임: “자동완성 의존”
프로페셔널 주니어는 코드는 읽히기 위해 쓰여야 한다는 것을 압니다, 타이핑하기 위해서가 아니라.
우리는 IDE의 황금기에 살고 있습니다. VS Code, WebStorm, IntelliJ는 우리보다 똑똑합니다. 자동완성을 제공하죠.
전략: 길고 설명적인, 의도를 드러내는 이름을 한 번 입력합니다. 그 뒤엔 Tab 키를 눌러 자동완성을 사용합니다.
우리는 지금 타이핑 3초를 투자해 나중에 디버깅 3시간을 절약합니다. 설명적인 이름을 사용하면 변수가 무엇을 담고 있는지 이해하기 위해 앞의 20줄을 읽을 필요가 없습니다. 변수 자체가 알려줍니다.
코드: “데이터 덤프” vs. “스토리”
// Before (미스터리 박스)
// 'data'는 무엇이든 될 수 있습니다.
// 우리는 'data'를 'Weather API Response'와, 'v'를 'temperature value'와 연결시켜야 합니다.
const data = getInfo();
if (data) {
const val = data.v;
// 이 줄을 따로 읽는다면 무슨 일이 일어나고 있는지 전혀 알 수 없습니다.
updateUI(val);
}
// After (의도 파악)
// 파일 전체를 보지 않아도 이것이 정확히 무엇인지 알 수 있습니다.
const weatherReport = fetchWeather();
if (weatherReport) {
const currentTemperature = weatherReport.degrees;
// 이 줄은 영어 문장처럼 읽힙니다.
updateUI(currentTemperature);
}
부끄러운 전당
코드 리뷰 중(또는 자신의 PR에서) 이런 경우를 발견하면 즉시 표시하세요. 이들은 컨텍스트 뱀파이어—코드의 의미를 빨아먹는 존재들입니다.
data→ 어떤 데이터인가요?userProfile이나transactionList를 사용하세요item→ 어떤 아이템인가요?cartItem이나notification을 사용하세요flag→ True가 무엇을 의미하나요?isVisible이나hasAccess를 사용하세요arr→ 어떤 배열인가요?activeUsers를 사용하세요
컴파일러를 위해 코드를 작성하지 마세요. 사람을 위해 코드를 작성하세요.
이 글은 제 핸드북 **“The Professional Junior: Writing Code that Matters.”**의 발췌본입니다. 400페이지 분량의 교과서는 아닙니다. 쓰여지지 않은 엔지니어링 규칙을 다룬 전술적인 현장 가이드입니다.