1. 함수의 책임을 다른곳으로 전가하지 말것(e.g. 함수 결과값을 호출한 곳에서 free)
  2. 포인터값을 변수로 가지지 말것(e.g. old_data의 특정 위치를 url path_start에서 가지고 있음)
  3. 포인터값이 필요할 경우 함수를 만들어서 동적으로 리턴하게 할 것 (e.g. get_url_path_start)
  4. 의미 있는 변수, 함수명 정할것
  5. 동일하거나 비슷한 기능을 하는 변수, 함수가 있는지 먼저 찾아보고 재사용할 것
  6. warning: unused variable 기본적으로 발생되지 않도록(컴파일에서 제외하지말고 소스 수정할것)
  7. 메모리 해제 시 반드시 free_and_set_null 사용할것
    1. ai_xfree 사용금지. free_and_set_null (비슷한 작업을 하는 함수 모두 교체, free하고 NULL세팅하지 않는 경우, https://mantis.monitorapp.com/view.php?id=6745 이슈에서 send_cnc_request 함수 내 ip를 더블프리 하는 현상 확인됨)
  8. if else 로 flag 상태 및 결과를 리턴하는 코드라면 flag 값으로 hash 테이블을 만들어서 리턴하도록 개선(성능 이슈 시)
  9. 주석 작성 시 가능하면 // 로 작성 (vscode에서 인덴트 할 때 한글이 삭제되는 현상 있음)
  10. 변수 선언 시 반드시 초기화 할 것 (함수를 호출하든 기본값을 설정하든)
  11. 메모리 할당 시 메크로 사용할 것 (할당 및 초기화 하는 메크로 있음)
  12. struct 정의 시 typedef 를 사용하며 _t로 정의 e.g., typedef struct abc { int a; } abc_t;

C 다중 ENUM