🤔클린 코드가 무엇인가요?
말 그대로 읽기 쉬운 코드가 바로 클린 코드.
저명한 개발자들은 클린 코드를 다음과 같이 정의했습니다.
"클린 코드는 단순하고 직접적이며, 최대한 읽기 쉽고 수정하기 쉽습니다. 클린 코드는 의도를 명확하게 표현하며, 작성자의 의도대로 동작합니다. 이는 잘 작성된 소설을 읽는 것처럼 읽기 즐거워야 합니다." -로버트 C. 마틴(Robert C. Martin)의 책 "Clean Code: A Handbook of Agile Software Craftsmanship”
"클린 코드는 어떤 사람도 수정하고 싶어하지 않도록 작성하는 코드다." - 워드 커닝햄(Ward Cunningham, 애자일(Agile) 개발 방법론과 익스트림 프로그래밍(Extreme Programming)의 창시자)
“의도의 명확한 표현” 즉 코드를 통한 “목적의 상호 공유”라고 생각합니다!
🤨클린 코드를 짜는 이유?
개발 공부를 한 7개월 동안 클린 코드의 중요성에 대해서 수도 없이 많이 들었기에 굉장히 중요한 개념이라 생각 합니다. 하지만 막상 팀 프로젝트를 진행하는 스터디에 들어가 협업을 할 때 굉장히 놓치기 쉬운 부분이라고 생각합니다.
사실 클린 코드를 공부하고 이 글을 포스팅하는 이유 역시 팀 프로젝트에서 의도가 명확한 코드를 적는 것이 아니라 만들어진 코드에 의도를 집어 넣으려는 자세를 경험했기 때문입니다.
이런 마인드 셋이 왜 잘못되었고, 클린 코드를 지향해야 하는 이유가 무엇일까요?
Technical Debt
실제 프로젝트에서 발생하는 수치와 이상적인 수치의 그래프는 위와 같습니다.
개발 초기에는 클린코드로 개발하기 보다는 좀 더 빠르고 쉬운 방법을 선택하면서, 유지보수가 어려워 지고, 결국 유지보수의 커다란 걸림돌이 되겠죠.
이것이 Technical Debt입니다. 뜻 그대로 기술적 부채, 언젠가는 해결해야될 문제라는거죠.
😀클린 코드를 작성하는 방법
- KISS 원칙 (Keep It Simple, Stupid): 코드를 가능한 한 단순하게 작성해야 합니다. 복잡성을 최소화하고 불필요한 기능이나 설계를 피하는 것이 중요합니다.
- DRY 원칙 (Don't Repeat Yourself): 중복을 최소화해야 합니다. 같은 코드를 여러 곳에서 반복해서 작성하는 것을 피하고, 중복되는 로직은 함수나 클래스 등으로 추상화하여 재사용성을 높여야 합니다.
- YAGNI 원칙 (You Aren't Gonna Need It): 불필요한 기능이나 코드를 작성하지 않아야 합니다. 현재 필요한 요구사항에 집중하고, 미래에 필요할지도 모를 기능을 미리 구현하지 않습니다.
- SOLID 원칙: SOLID는 다섯 가지 객체 지향 설계 원칙의 앞글자를 딴 것으로, 소프트웨어 설계의 유연성과 확장성을 높이는데 도움이 됩니다.
- 단일 책임 원칙(Single Responsibility Principle): 하나의 클래스는 하나의 책임만 가져야 합니다.
- 개방-폐쇄 원칙(Open/Closed Principle): 기존의 코드를 변경하지 않으면서 기능을 확장할 수 있어야 합니다.
- 리스코프 치환 원칙(Liskov Substitution Principle): 하위 클래스는 상위 클래스의 기능을 완전히 대체할 수 있어야 합니다.
- 인터페이스 분리 원칙(Interface Segregation Principle): 클라이언트는 자신이 사용하지 않는 인터페이스에 의존하지 않아야 합니다.
- 의존 역전 원칙(Dependency Inversion Principle): 의존 관계를 만들 때 고수준 모듈은 저수준 모듈의 구현에 의존하지 않도록 해야 합니다.
- 가독성과 명확성: 변수, 함수, 클래스 등의 이름은 명확하고 의미 있는 이름을 사용해야 합니다. 들여쓰기와 공백을 올바르게 사용하여 코드의 구조를 명확히 표현해야 합니다. 또한 주석을 적절하게 활용하여 코드의 의도를 설명해야 합니다.
- 작은 함수와 모듈: 함수는 작고 한 가지 일만 수행하도록 작성하고, 모듈은 관련된 기능을 묶어서 응집성을 높여야 합니다.
- 테스트 지향: 코드를 작성할 때 단위 테스트를 고려하여 설계하고, 테스트 가능한 코드를 작성해야 합니다. 테스트가 쉬운 코드는 버그를 줄이고 코드의 신뢰성을 높입니다.
출처
로버트 C. 마틴(Robert C. Martin)의 책 "Clean Code: A Handbook of Agile Software Craftsmanship”
클린코드란 무엇인가? | 인사이트리포트 | 삼성SDS
개발자라면 누구나 한 번쯤은 고민해 봤을 만한 클린코드! 클린코드란 무엇이고, 클린코드를 작성하기 위한 원칙들은 어떤 것들이 있는지 알아보겠습니다.
www.samsungsds.com
'개발관련 > 개발 상식' 카테고리의 다른 글
[개발 상식] 메세지 큐란? (0) | 2023.07.28 |
---|---|
[개발 상식] 선언적 프로그래밍과 명령적 프로그래밍, React.js와 선언적 프로그래밍 (0) | 2023.07.27 |
[개발 상식] 객체지향(OOP) vs 절차지향(PP) (0) | 2023.07.22 |
[개발 상식] API, REST, RESTful API의 의미와 설계규칙 (0) | 2023.07.22 |
[개발 상식] TDD란 무엇인가? (0) | 2023.07.21 |