요즘 개발자 졸업생들은 스펙 쌓느라 개발 공부를 별로 안 해서
실력이 예전 재학생 수준만 못하다.

프로그래머와 개발자가 다르다는 말은 예전부터 있었지만
거의 말장난 같은 것이었는데.. 이젠 진짜가 된 듯.

그래서 뉴비 개발자들이 모르는 코딩 팁을 좀 전해주려 한다.



1. 주석 스위칭
가끔 테스트용 코드에서 상황에 따라 두 가지 코드를 선택해서 실행해야 될 때가 있다.
보통은 이렇게 짠다.

/* Yes로 해서 테스트
    func1_Yes();
    func2_Yes();
    func3_Yes();
*/
/* No로 해서 테스트
    func1_No();
    func2_No();
    func3_No();
*/

처음부터 깔끔하게 설계하면 좋지만
개발 시작할 때는 워낙 테스트 할 게 많아서 이런 코드가 자주 생긴다.
#ifdef을 써서 가볍게 테스트 하기도 하지만
전처리 구문을 많이 넣으면 나중에 코드 정리할 때 피곤하다.

그래서 예전 개발자들은 이렇게 했다.

//* Yes or No 테스트
    func1_Yes();
    func2_Yes();
    func3_Yes();
/*/
    func1_No();
    func2_No();
    func3_No();
/**/

맨 앞의 빨간색 / 를 지우면 No 코드가 실행된다.
/ 를 붙인 상태라면 첫줄이 주석이기 때문에 Yes 코드가 실행된다.
코드를 감싸는 주석이 어떻게 해석되는지 잘 계산해 보자. 생각보다 재밌는 구문이다.



2. 비구조적 예외 처리
예외 처리를 위한 많은 테크닉들이 있지만
개발 시작시에 빠른 속도로 이것저것 테스트 해봐야 하는 시점에서는
그것을 다 지키기가 어렵다.

보통은 이런 상황 때문에 자주 피곤함을 느낀다.

int func()
{
    int rc = 0;
    rc = request1();
    if( rc != 0 ) { return rc; }
    rc = request2();
    if( rc != 0 ) { return rc; }
    rc = request3();
    if( rc != 0 ) { return rc; }

    return rc;
}

return 구문이 매 라인 들어가는 건 결코 좋은 코드가 아니다.
흔히 goto를 사용하지만 어떤 개발자는 goto를 극단적으로 싫어하기도 한다.
다른 테크닉은 그 나름의 단점이 있어 goto를 쓰는 것이 맞다고 주장하는 사람도 있다.

그러나 빠르고 가볍게 테스트할 땐 이런 기교가 편하다.

int func()
{
    int rc = 0;
    do {
        rc = request1();
        if( rc != 0 ) { break; }
        rc = request2();
        if( rc != 0 ) { break; }
        rc = request3();
        if( rc != 0 ) { break; }
    } while( 0 );
    return rc;
}

이해를 위해 코드를 풀어 써서 중복된 문장이 많지만
매크로를 만들어 쓰면 깔끔하게 예외처리를 할 수 있다.



기교라고 하기도 민망할 만큼 간단한 것이지만
의외로 이런 팁을 몰라 번거로운 작업을 하는 사람이 많다.

앞으로 가벼운 팁은 종종 올려줘야겠다.


Trackbacks  | Comments