코드를 짤 때
해당 코드가 올바르게 작성되고 있는지, 실무에서 쓰이기 괜찮은지 판별하기 어려운 경우가 많다
매번 LLM에게 물어볼 수도 없는 판국이고,,,
그래서 알아두면 좋을 것이
유지보수하기 좋고 깨끗한 코드를 만들기 위해 절대 하지 말아야 할 10가지
Code Smell(코드에서 나는 악취)이라 부르며 아래와 같은 10가지의 내용을 담고 있다.
1. Duplicate Code 중복코드
동일하거나 유사한 코드가 여러 곳에 존재하면 유지보수가 어려워지고,
수정할 때 여러 곳을 변경해야 하므로 오류가 발생할 확률이 증가한다.
🚀 해결방법
함수, 클래스, 모듈을 적극 활용하여 중복된 코드를 리팩토링한다!
DRY원칙을 적용하여 반복을 최소화한다.
*DRY; Don't Repeat Yourself
2. Long Methods 긴 메소드
너무 길고 여러 기능을 가진 메소드는 가독성과 유지보수가 떨어진다.
SRP를 위반할 확률이 증가한다.
*SRP(단일 책임 원칙); Single Responsibility Principle
🚀 해결방법
더 작고 명확한 역할을 가진 메소드로 분리한다!
가독성을 위한 적절한 이름을 부여한다
3. Large Classes 큰 클래스
너무 많은 책임을 지닌 클래스는 유지보수가 떨어지고 테스트가 어렵다.
클래스의 역할이 명확하지 않아서 가독성이 떨어진다.
🚀 해결방법
SRP(단일 책임 원칙)을 적용하여 클래스를 역할별로 나눈다
관련 기능은 별도의 클래스로 이동하여 응집도를 높인다
4. Feature Envy 기능 편애
메소드가 다른 클래스의 데이터를 과도하게 참조하면 캡슐화가 약해진다.
클래스 간 결합도가 증가하면서 변경이 어려워진다.
캡슐화(Encapsulation)
🚀 해결방법
메서드를 가장 많이 사용하는 클래스로 이동한다.
OOP을 준수하여 데이터와 동작을 함께 관리한다.
OOP(객체 지향 원칙);Object-Oriented Programming
5. God Object 갓 오브젝트
너무 많은 책임을 지닌 객체는 모듈성을 해치고 유지보수가 어렵다.
코드가 복잡해지고 수정 시 부작용이 발생할 확률이 크다.
🚀 해결방법
객체의 책임을 여러 개의 작은 클래스로 나눈다.
역할 별로 분리하여 결합도를 낮추고 응집도를 올린다.
6. Switch Statements 스위치 문
조건문이 많으면 유지보수가 어려워지고 코드가 복잡해진다.
OCP를 위반하여 확장성이 떨어진다.
OCP(개방/폐쇄 원칙);Open/Closed Principle
🚀 해결방법
다형성(Polymorphism)을 활용하여 조건문을 없애고 클래스로 대체한다.
전략 패턴(Strategy Pattern)을 사용하여 유연성을 높인다.
7. Shotgun Surgery 산탄총 수술
하나의 변경을 위해 여러 파일을 수정해야 하는 경우, 버그 발생 위험이 커진다.
코드베이스 전체에 영향을 미쳐 유지보수가 어렵다.
🚀 해결방법
비슷한 기능을 한 곳으로 모아 응집도(Cohesion)를 높인다.
특정 기능을 담당하는 클래스를 만들어서 변경범위를 최소화한다.
8. Data Clumps 데이터 뭉치
특정 변수들이 함께 사용되면서도, 별도로 관리되면 코드가 복잡해진다.
재사용성이 떨어지고 유지보수가 어려워진다.
🚀 해결방법
관련 데이터들을 하나의 객체 또는 구조체로 묶어서 관리한다.
데이터의 의미를 명확하게 하여 재사용성을 높인다.
9. Primitive Obsession 기본형 집착
기본형 데이터타입(int, string 등)에 과도하게 집착하면 코드의 의미가 흐려진다.
도메인 로직이 분산되어 유지보수가 어려워진다.
🚀 해결방법
의미 있는 값 객체를 만들어서 도메인 개념을 명확히 표현한다.
열거형(Enum)을 사용해 가독성을 개선한다.
10. Dead Code 죽은 코드
사용되지 않는 코드가 남아있으면 코드 탐색이 어려워지고 유지보수 비용이 증가한다.
불필요한 코드가 남아있으면 개발자가 혼란을 겪을 수 있다.
🚀 해결방법
정기적으로 정적 분석 도구를 사용하여 불필요한 코드를 제거한다.
주석 처리된 코드 대신 버전 관리 시스템을 활용한다.
✨ 코드 스멜을 방지하는 습관
코드 스멜은 종종 더 큰 문제의 전조,
이를 방치하면 유지보수 비용 증가, 성능 저하, 확장성 저하 등의 문제가 발생할 수 있다.
이를 방지하기 위해:
✔ 정기적인 코드 리뷰(Code Review)를 수행
✔ 자동화된 테스트(Automated Testing)로 코드 품질을 검증
✔ 클린 코드 원칙과 디자인 패턴을 학습하고 적용
✔ 기술 부채를 방치하지 말고 지속적으로 개선
https://intelloper.tistory.com/entry/code-smell#google_vignette
[Code Smell] 흠흠 코드에서 냄새나는데? 개발자라면 반드시 알아야 할 코드 스멜
소프트웨어 개발에서 깨끗하고 유지보수하기 쉬운 코드를 작성하는 것은 견고하고 확장 가능한 애플리케이션을 만드는 데 필수적입니다. 하지만 경험이 많은 개발자조차도 무심코 "코드 스멜(
intelloper.tistory.com
'STUDY > [ JavaScript ]' 카테고리의 다른 글
| !==(엄격 비교) ==(비엄격비교) 엥 개수는 똑같은데요 (0) | 2025.10.05 |
|---|---|
| 자바스크립트에서 신경쓰면 좋은 클린코드를 위한 항목 (0) | 2025.10.02 |
| 함수와 모듈 / 함수 호출() 함수 참조, Export Default Import /Export Named Import (0) | 2025.10.02 |
| Async/ Await/ Top-Level Await/ Promise/ Callback/ 동기,비동기 작업 (0) | 2025.10.01 |
| import require 왜 공존할수업서!!!!!! ECMA Script/자바스크립트/라이브러리/프레임워크 (0) | 2025.09.30 |