요즘 개발자 졸업생들은 스펙 쌓느라 개발 공부를 별로 안 해서
실력이 예전 재학생 수준만 못하다.
프로그래머와 개발자가 다르다는 말은 예전부터 있었지만
거의 말장난 같은 것이었는데.. 이젠 진짜가 된 듯.
그래서 뉴비 개발자들이 모르는 코딩 팁을 좀 전해주려 한다.
1. 주석 스위칭
가끔 테스트용 코드에서 상황에 따라 두 가지 코드를 선택해서 실행해야 될 때가 있다.
보통은 이렇게 짠다.
처음부터 깔끔하게 설계하면 좋지만
개발 시작할 때는 워낙 테스트 할 게 많아서 이런 코드가 자주 생긴다.
#ifdef을 써서 가볍게 테스트 하기도 하지만
전처리 구문을 많이 넣으면 나중에 코드 정리할 때 피곤하다.
그래서 예전 개발자들은 이렇게 했다.
맨 앞의 빨간색 / 를 지우면 No 코드가 실행된다.
/ 를 붙인 상태라면 첫줄이 주석이기 때문에 Yes 코드가 실행된다.
코드를 감싸는 주석이 어떻게 해석되는지 잘 계산해 보자. 생각보다 재밌는 구문이다.
2. 비구조적 예외 처리
예외 처리를 위한 많은 테크닉들이 있지만
개발 시작시에 빠른 속도로 이것저것 테스트 해봐야 하는 시점에서는
그것을 다 지키기가 어렵다.
보통은 이런 상황 때문에 자주 피곤함을 느낀다.
return 구문이 매 라인 들어가는 건 결코 좋은 코드가 아니다.
흔히 goto를 사용하지만 어떤 개발자는 goto를 극단적으로 싫어하기도 한다.
다른 테크닉은 그 나름의 단점이 있어 goto를 쓰는 것이 맞다고 주장하는 사람도 있다.
그러나 빠르고 가볍게 테스트할 땐 이런 기교가 편하다.
이해를 위해 코드를 풀어 써서 중복된 문장이 많지만
매크로를 만들어 쓰면 깔끔하게 예외처리를 할 수 있다.
기교라고 하기도 민망할 만큼 간단한 것이지만
의외로 이런 팁을 몰라 번거로운 작업을 하는 사람이 많다.
앞으로 가벼운 팁은 종종 올려줘야겠다.
실력이 예전 재학생 수준만 못하다.
프로그래머와 개발자가 다르다는 말은 예전부터 있었지만
거의 말장난 같은 것이었는데.. 이젠 진짜가 된 듯.
그래서 뉴비 개발자들이 모르는 코딩 팁을 좀 전해주려 한다.
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;
}
이해를 위해 코드를 풀어 써서 중복된 문장이 많지만
매크로를 만들어 쓰면 깔끔하게 예외처리를 할 수 있다.
기교라고 하기도 민망할 만큼 간단한 것이지만
의외로 이런 팁을 몰라 번거로운 작업을 하는 사람이 많다.
앞으로 가벼운 팁은 종종 올려줘야겠다.