거대한 표현을 잘게 쪼개기
더스틴 보즈웰, 트레버 파우커
느낌표 ! (인상 깊은 문장 | 문맥)
이번 챕터에서는 책의 예제에서 크게 벗어나지 않는다고 생각하지만 필자가 예제를 각색하여 적는 부분이 꽤 있다. 한편으로는 예제를 그대로 쓰는 것이 독자에게 더 유익하지 않을까 싶기는 하지만 가능하면 각색하는 것이 필자가 더 고민함으로 얻는 것이 있고 독자도 더 특색있는 글을 읽게 된다고 생각한다. 물론 각색이 더 훌륭하다고 생각하지는 않는다. 위험성이 도사리지만 걸어가보려한다. —
설명 변수
커다란 표현을 쪼개는 가장 쉬운 방법은 작은 하위 표현을 담을 ‘추가 변수(extra variable)’를 만드는 것이다. 추가 변수는 하위표현의 의미를 설명하므로 ‘설명 변수(explaining variable)’라고도 한다.
if (fileName.split('.')[1] === 'png') {}
다음은 설명 변수를 사용하는, 위와 동일한 코드의 예다.
const extend = fileName.split('.')[1] === 'png'; if (extend) {}
p.122
위 코드의 예제는 필자가 각색한 부분인데 해당 코드는 버그가 있는 코드이다. a.b.png 라는 파일명도 있을 수 있기 때문에 index 를 지정한 방법은 버그이다. 간단히 이해를 돕기위한 코드이기 때문에 위 코드처럼 작성하였다는 점을 알아주면 좋겠다. 실제로 확장자를 구하고 싶다면 마지막 인덱스를 참조해야한다.
요약 변수
if (req.user.id === document.ownerId) {} if (req.user.id !== document.ownerId) {}
요약 변수를 더하면 더 명확하게 표현 될 수 있다.
const userOwnsDocument = req.user.id === document.ownerId; if (userOwnsDocument) {} if (!userOwnsDocument) {}
p.123
코드가 대체로 짧으면 잘 작성한 코드라는 부분에 꽤 동의가 되지만 때에 따라서는 코드를 펼치기도 해야한다. 변수를 사용하지 않으면 중복된 코드가 펼쳐지기 마련이기 때문이다. 물론 변수를 사용할 때도 특정 block 에서만 사용된다면 고민해봐야한다.
Chapter 8 느낌
Chapter 8 에서는 좋은 에제와 기법이 많지만 간단히 소개하기에는 어려워 아쉬움이 많다. 쇼트 서킷 논리(Short-Circuit Logic) 오용 말기, 복잡한 논리와 씨름하기, 거대한 구문 나누기 등이 있지만 빼고 소개한게 마음 한켠에 남아있다.