Coding Style에 대해서 조언을 듣고자 합니다..
글쓴이: jmjarre / 작성시간: 화, 2005/07/19 - 11:21오전
안녕하세요.
제가 코딩을 하면서 몇가지 의문이 생겨 여러분께 조언을 듣고자 합니다.
맘에 드는 코딩 스타일이 어떤것이지 그리고 잘못된 부분이 있다면 꼭 집어 주시면 감사하겠습니다...
아래 함수들을 input, output이라는 입력 인자를 받아서 그에 맞게 하드웨어 세팅을 해주는 함수들입니다.
input 값에 따라 output 인자가 한정되어 지며 그에 따라 FALSE, TRUE 를 반환해 줍니다.
잘 부탁드리겠습니다.. 꾸벅..... :)
mixer 함수 mixer_varify 함수 두분으로 나뉘어져 있습니다.
/**** mixer ****/ /* style 1과 style 2 의 경우 varify 함수는 빠진 상태 */ /* style 1 */ bool mixer(int input, int output) { bool return_val; if ( mixer_input(input) == TRUE ) { if ( mixer_output(output) == TRUE ) return_val = TRUE; } else { return_val = FALSE; } return return_val; } /* style 2 */ bool mixer(int input, int output) { if ( mixer_input(input) == TRUE ) if ( mixer_output(output) == TRUE ) return TRUE; return FALSE; } /*------------------------------------------------------------*/ /* style 3 */ /* varify 하는 함수를 내장 시킨 경우 */ bool mixer(int input, int output) { if (input == LD2LO || input == RD2LO) { if (input == LI2LO || input == RI2LO) { if (mixer_input(input) == TRUE) if (mixer_input(output) == TRUE) return TRUE; } } else if (input == LD2MO || input == RD2MO) { if (input == LI2MO || input == RI2MO) { if (mixer_input(input) == TRUE) if (mixer_input(output) == TRUE) return TRUE; } } else if (input == LD2RO || input == RD2RO) { if (input == LI2RO || input == RI2RO) { if (mixer_input(input) == TRUE) if (mixer_input(output) == TRUE) return TRUE; } } return FALSE; } /* style 4 */ /* varify 함수를 따로 두어 사용한 경우 */ /* i) if 문을 단계적으로 사용, TRUE 를 우선으로 검사 */ bool mixer(int input, int output) { if ( mixer_varity(input, output) == TRUE ) if ( mixer_input(input) == TRUE ) if ( mixer_output(output) == TRUE ) return TRUE; return FALSE; } /* style 5 */ /* ii) if 문을 순차적(?)으로 사용, FALSE 를 우선으로 검사 */ bool mixer(int input, int output) { if ( mixer_varity(input, output) == FALSE ) return FALSE; if ( mixer_input(input) == FALSE ) return FALSE; if ( mixer_output(output) == FALSE ) return FALSE; return TRUE; } /*------------------------------------------------------------*/ /***** mixer_varify *****/ /* style 1 */ bool mixer_varify(int input, int output) { bool return_val; switch (input) { case LD2LO: case RD2LO: switch (output) { case LI2LO: case RI2LO: return_val = TRUE; break; default: return_val = FALSE; break; } break; case LD2MO: case RD2MO: switch (output) { case LI2MO: case RI2MO: return_val = TRUE; break; default: return_val = FALSE; break; } break; case LD2RO: case RD2RO: switch (output) { case LI2RO: case RI2RO: return_val = TRUE; break; default: return_val = FALSE; break; } break; default: return_val = FALSE; break; } return return_val; } /* style 2 */ bool mixer_varify(int input, int output) { if (input == LD2LO || input == RD2LO) { if (input == LI2LO || input == RI2LO) return TRUE; } else if (input == LD2MO || input == RD2MO) { if (input == LI2MO || input == RI2MO) return TRUE; } else if (input == LD2RO || input == RD2RO) { if (input == LI2RO || input == RI2RO) return TRUE; } return FALSE; } /*------------------------------------------------------------*/ bool mixer_input(int input) { // DO SOMETHING return TRUE; } bool mixer_output(int output) { // DO SOMETHING return TRUE; }
Forums:
Re: Coding Style에 대해서 조언을 듣고자 합니다..
위의것이 개인적으로 마음에 듭니다.
되도록이면 if문에서 {, }은 붙이는것이 좋다고 개인적으로 생각하며
bool 을 BOOL 로 하는것이 좋을것 같은데요
위에서는 c함수일것 같은데
C++에 bool 형이 존재합니다.
또한 함수에서 input과 output이 수정되지 않으므로 const 연산자를 써주는것이 좋을듯 싶습니다.
mixer_varify 함수내에서
BOOL mixer_input_varify(const int data);
BOOL mixer_output_varify(const int data);
함수를 만들어 사용하는것이 좋을것 같습니다.
속도가 중요하다면 inline 함수로 만드시는것도 좋겠지요^^
모듈로 만드신다면 static 함수도 생각해 보시구요.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
Re: Coding Style에 대해서 조언을 듣고자 합니다..
이 정도로 하면 간결해지지 않을까요?
답변 감사드립니다...
두분 모두 감사합니다.. 코드 정리하는데 많은 도움이 되었습니다..
Re: Coding Style에 대해서 조언을 듣고자 합니다..
조심스레 이야기 해보면
소스는 간결해 보이는데 만약 debug할일이 생기면 골치 아픕니다.
디버깅시에 어디서 에러가 났는지 애매 모호 하기 때문입니다.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
Re: Coding Style에 대해서 조언을 듣고자 합니다..
주제와 관계 없는 예기지만.....
C++ 에는 bool, true, false가 keyword 로 존재하고
반면 C99 에는 '_Bool' 이 boolean type을 위한 keyword로 존재합니다. 대신 <stdbool.h>을 통해 bool, true, false 가 macro로 제공되기 때문에, c++ 과 동일하게 bool,true,false를 써도 무망할것 같습니다.
댓글 달기