코드 스멜
보이기
코드 스멜(code smell←코드 냄새)은 컴퓨터 프로그래밍 코드에서 더 심오한 문제를 일으킬 가능성이 있는 프로그램 소스 코드의 특징을 가리킨다.[1]
이 용어는 1990년대 말 켄트 벡과 워즈위키에 의해 고안된 것으로 보인다. 《Refactoring: Improving the Design of Existing Code》라는 책에서 특집으로 실리면서 이 용어의 이용이 늘어나게 되었다.[2] 또, 코드 스멜은 애자일 프로그래머가 사용하는 용어이기도 하다.[3]
무엇이 코드 스멜인지 아닌지의 여부를 결정하는 일은 주관적인 것으로 언어와 개발자, 개발 방법에 따라 다양하다. 자동으로 특정한 종류의 코드 스멜을 확인하기 위한 도구들이 있으며, 그 예로는 체크스타일, PMD, 파인드벅스 등을 들 수 있다.
일반적인 코드 스멜
[편집]응용 프로그램 수준의 스멜:
- 신비로운 이름: 함수, 모듈, 변수, 클래스 이름이 그들이 동작하는 방식이나 그들을 사용하는 방법과 어울리지 않게 작성된 이름
- 중복 코드: 동일하거나 매우 비슷한 코드가 다른 곳에 있음.
- 억지로 꾸민듯한 복잡성: 단순한 디자인 패턴으로도 충분한 곳에 과도하게 복잡한 패턴을 일부러 사용함
- 산탄총 수술: 간단한 변경이지만 여러 클래스에 동시에 적용해야 할 필요가 있는 변경.
- 제어할 수 없는 부작용: 대개 실행할 때 예외를 일으키는 코딩의 부작용, 단위 테스트로는 문제의 원인을 잡아 낼 수 없음.
- 변수 용도 변경: 변수의 상태가 예측불가능하여 추론하기가 어려워 리팩토링하면 난이도를 증가시키기 충분함.
- 보고 있어도 헷갈리는 부울리언 값: 반대 상황을 쉽게 알 수 있지만, 여전히 맞는지 확인해야하는 상황.
클래스 수준의 스멜:
메서드 수준의 스멜:
- 너무 많은 매개변수
- 긴 메서드
- 과도하게 긴 식별자
- 과도하게 짧은 식별자
- 과도한 데이터의 반환
- 과도한 주석
- 과도하게 긴 줄로된 코드
같이 보기
[편집]각주
[편집]- ↑ Tufano, M.; Palomba, F.; Bavota, G.; Oliveto, R.; Di Penta, M.; De Lucia, A.; Poshyvanyk, D. (2015년 5월 1일). “When and Why Your Code Starts to Smell Bad” (PDF). 《2015 IEEE/ACM 37th IEEE International Conference on Software Engineering (ICSE)》 1: 403–414. doi:10.1109/ICSE.2015.59.
- ↑ Fowler, Martin (1999). 《Refactoring. Improving the Design of Existing Code》. Addison-Wesley. ISBN 0-201-48567-2.
- ↑ Binstock, Andrew (2011년 6월 27일). “In Praise Of Small Code”. Information Week. 2011년 7월 2일에 원본 문서에서 보존된 문서. 2011년 6월 27일에 확인함.
외부 링크
[편집]- (영어) CodeSmell at c2.com
- (영어) Taxonomy of code smells Archived 2014년 10월 23일 - 웨이백 머신
- (영어) Overview of many code smells Archived 2013년 1월 18일 - 웨이백 머신
- (영어) CodeSmell
- (영어) Boundy, David, Software cancer: the seven early warning signs or here, ACM SIGSOFT Software Engineering Notes, Vol. 18 No. 2 (April 1993), Association for Computing Machinery, New York, NY, USA