반응형
<깨끗한 코드를 구현하면 낮은 추상화 수준에서 관심사를 분리하기 쉬워진다. 복잡성은 제품을 계획하고 제작하고 테스트하기 어렵게 만든다.>
- 요즘 공부를 하면서 전회사에서 꼴에 클린 코드를 지향하며 하였지만 개발자들 간에 규칙을 정하지 않고 문서화를 하지 않으시는 분들이 많아 깨끗한 것과 거리가 멀어졌었는지를 느낀다.. 다시 그 때를 복기하고 지금과 비교하며 책을 정리해본다
- 관심사 분리
- 어플리케이션을 서로 겹치지 않는 개별 단위로 나누는 과정
- 즉 잘게 잘 쪼개야한다는거
- 이 때 객체를 생성하거나 의존성을 연결할 때 모듈성이 깨지지 않게 해야하고 관심사를 잘 분리해야 이를 높게 유지할 수 있다.
- 시스템 생성과 시스템 사용을 분리해야한다.
- 생성과 관련한 코드는 모두 main이나 main이 호출하는 모듈로 옮긴다.
- 모든 의존성이 main에서 애플리케이션으로 향한다.
- 애플리케이션은 main이나 객체가 생성되는 과정을 모른다.
- 애플리케이션은 모든 객체가 생성되었고 모든 의존성이 연결되었다고 가정한다.
- 의존성 주입
- 지금 Typescript에서 nest.js를 사용하려는 이유라고 들었음. (당장 진행할 내용이 아니라서 아직 공부를 시작하진 않았는데 의존성을 주입하는데 있어 nest.js가 더 용이할 뿐만이 아니라 의존성 문제가 덜 생긴하고 함)
- 예컨데 테스트 코드를 돌릴 때 돌아가면 안 되는 부분에 대해서 mocking 처리해서 하는데 의존성 주입을 좀 더 간편하게 하는 nestjs를 사용하게 되면 해당 function을 다른 파일을 참조하도록 해서 의존성을 돌려 코드 내부에서 구동 서버 환경에 따라 코드에 따라 다르게 흘러가게 하는 그런 로직을 안 넣어줘도 된다.
- 예컨데 비슷한 원리로는 외부 환경 변수 관리임. 환경 변수 자체는 코드에 있는게 아님. 서버 환경에 따라서 다른 환경 변수 ( DB host 정보, API token 키) 들을 다르게 할당시킬 수 있다. 이런게 역전 제어임.
- 필요한 객체를 직접 생성하는 것이 아닌, 외부로부터 필요한 객체를 받아서 사용 하는 것이다. 이를 통해 객체간의 결합도를 줄이고 코드의 재활용성을 높여준다.
- 제어 역전에서는 한 객체가 맡은 보저 책임을 새로운 객체에게 전적으로 떠넘긴다. 새로운 객체는 넘겨받은 책임만 맡으므로 단일 책임 원칙을 지키게 된다.
- 지금 Typescript에서 nest.js를 사용하려는 이유라고 들었음. (당장 진행할 내용이 아니라서 아직 공부를 시작하진 않았는데 의존성을 주입하는데 있어 nest.js가 더 용이할 뿐만이 아니라 의존성 문제가 덜 생긴하고 함)
- 횡단 관심사
- 로깅, 보안, 트랜잭션 등등 다수의 모듈에서 반복적으로 나타나는 부분 영속성과 같은 관심사는 애플리케이션의 자연스러운 객체 경계를 넘나드는 경향이 있다. 모든 객체가 전반적으로 동일한 방식을 이용하게 만들어야 한다.
반응형
'개발 일반' 카테고리의 다른 글
[cron job] 크론잡 부하 줄여주기 with spring batch, SNS, SQS (0) | 2021.06.28 |
---|---|
잊을 때쯤 한번 다시 읽어봐야할 Clean code에 관하여 (리팩토링) (0) | 2021.04.21 |
개발 일반잊을 때쯤 한번 다시 읽어봐야할 Clean code에 관하여 (경계) (0) | 2021.03.23 |
개발 일반잊을 때쯤 한번 다시 읽어봐야할 Clean code에 관하여 (오류 처리) (0) | 2021.03.23 |
잊을 때쯤 한번 다시 읽어봐야할 Clean code에 관하여 (주석) (0) | 2021.03.15 |