좋은 코드(Clean Code)는 왜 중요하고 지금까지 만들어둔 UserController를 보다 좋은 코드로 리팩토링하는 것을 배워보겠다.
그리고 스프링 컨테이너와 스프링 빈이 무엇 어떠한 여러 방법으로 다루는지 인지?
스프링 컨테이너가 왜 필요한지, 좋은 코드와 어떻게 연관이 있는지 이해하는 시간을 가져보겠다.
Clean Code는 왜 중요할까?
앞으로 많은 코드를 작성할 텐데 코드는 무엇일까?
코드는 요구사항을 표현하는 언어이다. 기술적 요구사항이건 비지니스적인 요구사항이건 어떠한 것을 동작, 기능하기 위해서 코딩을 하는데 개발자는 소프트웨어를 만들어가면서 요구되는 요구사항을 읽고 이해하고 그 요구사항을 구현하기 위해 코드를 작성한다.
이 때 읽는 것은 주어진 요구사항 말고 코드도 있는데 현업에서는 진작 존재하는 수십수만줄의 코드를 읽고 원래 있던 기존의 코드에서 새로운 것을 구현하거나 일부 내용을 변경하는 코드가 많다.
코드를 작성하는 것 보다 읽는 시간이 많을 것이다. 코드를 읽는 것은 필수적이고 피할 수 없다!
Clean Code의 사례
매우 인기있는 앱을 개발한 회사가 있는데 출시 주기가 점점 늘어지기 시작했다. 업데이트 점점 늘어나고 버그가 여전히 남아있고 프로그램도 느려지고 아예 동작하지 않기도 했다. 그렇게 사용자들이 앱을 사용하지 않았는데
내막을 보니 다음 버전 출시가 바빠 코드를 마구 작성하였는데 기능을 추가할 수록 코드는 엉망이 되었고, 감당이 불가능해 진 것이다.
실제로 안좋은 코드가 쌓이면, 시간이 지날 수록 생산성이 낮아진다.
나는 여태 껏 한 Controller에서 모든 기능을 구현했었는데 왜 하면 안될까?
함수는 최대한 작게 만들고 한 가지 일만 수행하는 것이좋다.
Class는 작아야 하며 하나의 책임만을 가져야한다.
라고 정의 할 수 있다.
코드가 몇천줄이 넘어간다면?
- 그 함수를 동시에 여러 명이 수정할 수 없다.
- 그 함수를 읽고, 이해하는 것이 너무 어렵다.
- 그 함수의 어느 부분을 수정하더라도 함수 전체에 영향을 미칠 수 있기 때문에 함부로 건들 수 없게 된다.
- 너무 큰 기능이기 때문에 테스트도 힘들다.
- 종합적으로 유지보수성이 매우 떨어진다.
여기까지 공부하면서 작성했던 코드중 하나이다.
이 코드는 크게 3가지 기능을 하는데
- API의 진입 지점으로써 HTTP Body를 객체로 변환한다.
- 현재 유저가 있는지 없는지 확인하고 예외 처리를 한다.
- SQL을 사용해 실제 Databased와의 통신을 담당
정리하자면 위 API는 진입지점으로써의 역할 분기처리, 유저가 있는지 없는지의 역할 그리고 DB와의 통신역할을 하고 있다.
이 다음 시간에는 이 API를 3단분리로 하면서 코드를 작성해 보도록 하겠다.
'기록해보기' 카테고리의 다른 글
UserController와 스프링 컨테이너 (0) | 2023.06.05 |
---|---|
Controller를 3단 분리하기 -Service와 Repository (1) | 2023.06.05 |
다시 한번 정리! (0) | 2023.06.04 |
유저 업데이트 API, 삭제 API 예외 처리하기 (0) | 2023.06.04 |
유저 업데이트 API, 삭제 API 개발과 테스트 (0) | 2023.06.04 |
댓글