빈칸의 위력

류광, 2007/11/15 18:55
빈칸이 코드의 표현력에 미치는 영향을 잘 보여주는 예 하나.

evil c에서 본 코드 조각 하나:

void doStuff(int count) {
    while(count --> 0)
        fleh();
}

count-- > 0의 빈칸을 적절히 배치해서 '좌변은 우변에 도달할 때까지 변한다'라는 의미구조를 가진 새로운 --> 연산자(?)를 만들어 낸 셈입니다.

출처의 저자는 '사용하지 않는 것이 좋다'는 취지로 제시한 것이지만 저는 상당히 마음에 듭니다 :)

count의 초기 값이 N이라 할 때 루프 본문 안에서 count가 N에서 0까지나 N에서 1까지가 아니라 N-1에서 0까지 변한다는 점이 좀 직관적이지 않게 느껴질 수도 있겠지만, 위의 예처럼 루프 변수를 '반복 횟수' 용으로만 사용하는 경우에는 문제가 되지 않습니다. 더욱 중요한 것은, 루프 변수를 배열의 색인으로 사용하는 경우에는 N-1에서 0까지가 유일하게(물론 루프 변수를 '감소'하는 경우에서) 올바른 방식입니다. C, C++에서 크기가 N인 배열의 유효한 색인은 0~N-1이니까요.

top
트랙백 1 : 의견 # + 4

Trackback Address :: http://occamsrazr.net/tt/trackback/171

  1. Tracked from kkamagui 프로그래밍 세상 2007/11/16 14:02 DELETE

    Subject: 빈칸 하나가 코드를 완전히 다르게 보이게 한다

    친구가 류광님의 블로그에서 재미있는 것을 발견해서 보내줬는데, 빈칸의 위력이라는 글입니다(원문은 http://occamsrazr.net/tt/171 에서 보실 수 있습니다 ^^). 아래가 그 빈칸의 위력을 보여주는 코..
comments powered by Disqus

(2013년 11월 10일자로 블로그에도 DISQUS 시스템을 도입했습니다. 기존 의견의 수정, 삭제, 댓글 추가는 여전히 가능합니다.)

  1. 나무늘보 2007/11/17 11:37 PERMALINKMODIFY/DELETE REPLY

    하하,, 기발하네요^^

  2. 마로 2007/12/11 13:52 PERMALINKMODIFY/DELETE REPLY

    와.. 이거정말 기발하네요 ㅋ_ㅋ)
    제 마음에도 쏙 드는 코드입니다 :)

  3. 날자고도 2008/01/10 20:13 PERMALINKMODIFY/DELETE REPLY

    0도 포함이라는 느낌도 드네요

    count > 0인데

    count >= 0
    로 보일소지가 있네요 ^^

  4. 류광 2008/01/14 21:33 PERMALINKMODIFY/DELETE REPLY

    후증가이므로 count >= 0 입니다 :)