만일 이런 기능을 구현한다고 한다면 어떻게 하시겠습니까? 어떤 제어기가 있는데 램프를 켜는 동작, 끄는 동작, 알람을 울리는 동작, 알람을 끄는 동작. 이런 기능을 갖추도록 프로그램을 작성해서 다른 분이 사용할 수 있도록 함수를 제공한다고 한다면 어떻게 처리하시나요? 저는 지금까지 이렇게 처리해 왔습니다.

#define TURN_ON_LIGHT        0
#define TURN_OFF_LIGHT       1
#define TURN_ON_ALARM       2
#define TURN_OFF_ALARM      3

extern void command_to_robot( int ndx_cmd);

그래서 알람을 울리고 싶다면 command_to_robot( TURM_ON_ALRM); 이렇게 호출하라고 했지요.

 

그런데 최근에는 이런 상수를 사용하는 대신에 아래와 같이 함수를 개별적으로 작성해서 제공합니다.

extern void robot_turn_on_light( void);
extern void robot_turn_off_light( void);
extern void robot_play_alarm( void);
extern void robot_stop_alarm( void);

물론 각 함수별로 구성해서 제공해 주지요. 이렇게 하면 상수를 사용했을 때보다 코딩 양이 많아 집니다. 상수만 정의하고 함수 하나 던져 주면 되는데, 기능을 함수로 각각 만들었으니 타입할 양이 많을 밖에요. 그럼에도 사용하는 것은 이렇게 하면 인수이계가 쉽고 버그 발생이 줄더군요. 물론 저의 개인적인 생각입니다. 매우 좋은 방법이라고 할 수는 없지만, 상수 값이 변경으로 오작동하는 경우는 확실히 없네요. ^^