사고를 줄이는 C 코드의 기준과 습관
C언어C를 오래 쓰는 사람들의 코드를 보면
문법이 특별히 화려하지는 않다.
대신 공통적으로 느껴지는 게 있다.
“이 코드는 함부로 터지지 않겠다.”
그 차이는 재능이 아니라
기준과 습관에서 나온다.
C에서 사고를 줄이는 방법은
의외로 복잡하지 않다.
대신 일관되어야 한다.
1) 메모리의 주인을 항상 명확히 한다
C 코드에서 가장 먼저 정리해야 할 건
포인터가 아니라 책임이다.
- 누가 할당하는가
- 누가 해제하는가
- 언제까지 유효한가
이 세 가지 중
하나라도 흐릿하면
그 코드는 이미 위험하다.
좋은 C 코드는
메모리 사용법을 외우지 않아도
흐름만 읽어도 책임이 보인다.
2) 실패 경로를 먼저 설계한다
사고를 줄이는 사람들은
정상 흐름보다
실패 흐름을 먼저 생각한다.
- 할당 실패 시
- 입력이 비었을 때
- 외부 호출이 끊겼을 때
이때 중요한 건
“어떻게 복구할 것인가”보다
“어디서 멈출 것인가”다.
실패를 감지했는데도
계속 진행하는 코드가
가장 많은 사고를 만든다.
3) 함수 하나를 작은 계약으로 다룬다
C 함수는 단순한 코드 묶음이 아니다.
작은 계약이다.
좋은 함수는
시그니처만 보고도 이게 드러난다.
- 무엇을 기대하는지
- 무엇을 보장하는지
- 실패하면 어떤 상태인지
이게 코드나 주석으로 드러나지 않으면
그 함수는 언젠가 오해를 낳는다.
4) 경계 조건은 옵션이 아니라 기본값이다
사고가 적은 C 코드는
항상 가장 귀찮은 입력부터 생각한다.
- 길이가 0인 데이터
- 최대 길이를 넘는 입력
- NULL이 들어오는 경우
이걸 “나중에 추가”하지 않는다.
처음부터 포함시킨다.
경계 조건을 기본값으로 두는 순간
코드는 훨씬 단단해진다.
5) 정리 코드를 작성하는 데 시간을 아끼지 않는다
C에서 종료 코드는
대충 쓰기 가장 쉽고,
사고가 나기 가장 쉬운 부분이다.
- 리소스 해제 순서
- 중복 해제 방지
- 부분 실패 후 정리
이걸 꼼꼼히 작성하는 사람은
운영 환경에서 훨씬 덜 고생한다.
“어차피 끝나는 코드”라는 생각이
가장 많은 버그를 숨긴다.
6) 테스트는 신뢰가 아니라 의심이다
C 테스트의 목적은
“잘 된다”를 확인하는 게 아니다.
- 어디서 깨지는지
- 얼마나 버티는지
- 실패하면 어떤 모양인지
이걸 확인하는 게 목적이다.
테스트하지 않은 경로는
안전한 게 아니라
아직 사고가 안 난 상태일 뿐이다.
C를 안전하게 쓰는 비결은
새로운 기법에 있지 않다.
- 책임을 흐리지 않고
- 실패를 가볍게 넘기지 않고
- 경계를 처음부터 포함시키는 것
이 기준을
매번 지키는 사람의 코드는
시간이 지나도 크게 변하지 않는다.
C는 솔직한 언어다.
작성자가 준비한 만큼만
정확하게 동작한다.
그래서 C를 잘 쓰는 사람은
문법보다 먼저
자기 기준을 단단히 세운다.
'C언어' 카테고리의 다른 글
| [실전] 구글링보다 10배 빨랐다: AI로 5분 만에 만든 C언어 로그 함수 (0) | 2026.01.12 |
|---|---|
| C언어의 진짜 난이도는 문법이 아니라 '보이지 않는 규칙'에 있다 (0) | 2026.01.06 |
| 현장에서 가장 많이 터지는 C 사고 패턴들 (0) | 2025.12.26 |
| C에서 아직도 사고 나는 이유는 문법이 아니다 (0) | 2025.12.25 |
| 📝 C 언어 함수 포인터와 콜백 함수: 유연한 코드 설계를 위한 핵심 패턴 (0) | 2025.11.21 |