인간이 작성한 코드인지 AI가 작성한 코드인지 구분하는 7가지 징후
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
인공지능
대상자
- 개발자 (코드 리뷰, 채용, 디버깅)
- 중급 이상 (AI 생성 코드 패턴 인식, 실무 적용 경험)
핵심 요약
- 과도한 설명 :
@param
과@return
을 사용한 과도한 docstring (예:def add_numbers(...)
의 설명) - 과도한 명명 규칙 :
total_user_input_character_count
와 같은 길고 정확한 변수명 - 생산성 테스트 결여 : 실제 엣지 케이스 처리 없음 (예:
a + b
만 처리하고 복잡한 예외 무시)
섹션별 세부 요약
1. 과도한 설명으로 인한 코드 스타일
- LLM의 특징 :
def add_numbers(...)
와 같은 함수에 불필요한 docstring 추가 - 인간의 습관 : 문맥에 맞는 주석 (예: 복잡한 로직 설명)
- 문제점 : AI는 "자기 설명"을 강조하지만, 인간은 문제 해결 중심으로 코딩
2. 과도한 변수명과 코드 명명
- AI의 패턴 :
is_feature_toggle_enabled_for_beta_users
와 같은 길고 구체적인 변수명 사용 - 인간의 습관 :
x
,tmp
,flag
와 같은 짧고 직관적인 변수명 사용 - 문제점 : AI는 명확성 최우선으로 코딩하지만, 인간은 맥락 중심으로 작성
3. 실무 엣지 케이스 처리 결여
- AI의 한계 :
a + b
만 처리하고 비정상 입력(예: 문자열) 대응 없음 - 인간의 습관 : 예외 처리 (예:
if not isinstance(a, int): raise TypeError
) - 문제점 : AI 생성 코드는 기본 테스트 환경에서 작동하지만, 실무 환경에서 실패
4. 완벽한 포맷팅과 디버깅 무시
- AI의 특징 : 완벽한 들여쓰기, 정확한 타입 어노테이션 (예:
a: int, b: int -> int
) - 인간의 습관 : 미흡한 포맷팅, 디버깅 흔적 (예:
print()
로그 남김) - 문제점 : AI는 규칙 준수를 강조하지만, 인간은 실제 개발 과정의 불완전함을 반영
5. AI 생성 코드의 패턴 인식
- AI의 특징 : 모범 사례 기반 생성 (예:
@param
,@return
사용) - 인간의 습관 : 단순한 구현 (예:
return a + b
만으로 함수 작성) - 문제점 : AI 생성 코드는 튜토리얼 스타일로 보이고, 인간 코드는 프로젝트 스타일로 구분
6. AI 생성 코드의 실무 실패 사례
- 사례 : ChatGPT로 생성된 CSV 파서 CLI는 단순 테스트 환경에서 작동
- 문제점 : 생산성 테스트 없이 개발된 코드는 실무에서 실패
- 해결책 : 실무 엣지 케이스 테스트 필수
7. AI 생성 코드의 인식 방법
- 핵심 팁 :
- 과도한 설명 (예:
@param
사용) - 과도한 명명 (예:
total_user_input_character_count
) - 실무 엣지 케이스 결여
결론
- AI 생성 코드를 식별하려면 :
- @param
, @return
을 사용한 과도한 docstring
- total_user_input_character_count
와 같은 과도한 변수명
- 실무 엣지 케이스 처리 결여
- 완벽한 포맷팅과 디버깅 흔적 부재
- 모범 사례 기반으로 작성된 코드 패턴
- 튜토리얼 스타일의 코드 구조
- 생산성 테스트 결여
- AI 생성 코드는 인간과 다른 스타일으로 작성됨