소프트웨어를 설계하거나 개발을 할 때 많이 나오는 주제중에 하나는 클린 코드와 클린 아키텍쳐입니다. 이 글에서는 클린 코드와 클린 아키텍쳐에 대한 저의 생각에 대해서 간단하게 작성해보도록 하겠습니다.
대학교나 팀플이나 과제를 해결하기 위한 개발을 할때에는 보통 코드의 품질이나 소프트웨어의 아키텍쳐 등은 별로 고려를 하지 않게 됩니다. 저 또한 과제를 할때는 "우선 결과만 나오게 하자" 라는 생각으로 코드의 품질을 크게 고려를 하지 않았는데요, 회사에 처음으로 들어와서 개발을 하게 되고 코드 리뷰를 받는 과정에서 처음으로 코드의 품질을 생각하여 작성하는 방법에 대해서 배우기 시작했습니다. 그러다 보니 무작정 결과만 내는 코드 보다는 함수의 이름, 변수의 이름, 추상화, 단일 원칙 등등의 권장되는 개발 방법론들에 대해서 접하기 시작했습니다.
그렇게 해서 인터넷과 책을 통해 이런저런 개발 방법론에 대해서 찾아보았습니다. 대표적으로 SOLID 나, DI 같은 의존성 주입 등의 방법 등을 접하게 되었습니다. 하지만 개발을 많이 해보지 않은 상태에서 읽으려니 감이 잘 안오고 어디서 부터 어떻게 적용해야 할지 파악하기 힘들었습니다. 첫 입사후 다 읽겠다는 다짐과 달리 잘 읽히지 않아 초반 부만 읽고 덮어둔 채로 개발을 진행 하다가 최근에서야 다시 클린 코드와 클린 아키텍쳐에 대해 공부를 하기 시작했습니다. 다행히 처음에 접했을때와 달리 공감되는 부분도 있으며, "아 이런건 언제 적용하면 좋겠구나" 와 같은 생각들이 들면서 나름 책이 읽히기 시작했습니다.
클린 코드나 클린 아키텍쳐 등에 대해서 알아보다 보니 든 생각은 결국 SOLID 나 DI 나 여러 방법론들은 방법일 뿐이고 결국에는 추구하는 목표가 동일하다는 생각을 하게 되었습니다. 결국 이러한 방법들은 아래의 큰 목표들을 두고 있다고 생각합니다.
- 읽기 좋은 코드를 작성하자
- 사용하기 좋은 코드를 작성하자
- 수정하기 좋은 코드를 작성하자
- 테스트가 용이한 코드를 작성하자
우리가 잘 알고 있는 유명한 방법론들도 결국 위 목표들을 구현하기 위해 사용하는 것들이라고 느껴져서 코드를 작성할때 어떤 원칙에 가깝고 어떤 방법론을 적용해야 할까를 생각하기 보다 이 코드가 읽기 좋은지? 혹은 다른 패키지가 추가되었을때 확장하기 쉬운지? DB 에 의존하고 있는것 같은데 테스트하기 편한지? 등을 생각하다 보면 자연스럽게 어떤 방법론을 쓰면 좋을지 나온다고 생각합니다.
'아키텍쳐' 카테고리의 다른 글
[강의 정리] Distributed System 1.3: RPC (Remote Procedure Call) (0) | 2023.02.23 |
---|---|
[강의 정리] Distributed System 1.2: Computing networking (1) | 2023.02.23 |
[강의 정리] Distributed System 1.1: Introduction (0) | 2023.02.21 |
Nginx 는 어떻게 구성되어 있고, 어떻게 동작하는가? (2) | 2022.11.13 |
의존성 주입(Dependency Injection) 이란? (0) | 2022.06.12 |
댓글