MOC: [[카카오]] Index: [[🏷️ Lecture Notes]]
Intro. 재밌다…
카카오 Tech 유튜브 한 번 봐바야겠다하고 처음 눈에 들어온게 Refactoring 영상이었다
리팩토링 어떻게 해야하지?를 막연하게 생각했었는데, 논리 정연하게 ~해서 ~했습니다로 전개 되는 발표 들으며 조곰 알거 같다
자주 Tech 블로그나 유튭을 봐야겠다 생각이 든다
혼자 어떻게 공부 할까 싶었는데, 이렇게 알려주고 공유해주시는데 안보는 내가 바보였다
🐥 카카오 테크 캠퍼스 2단계가 끝났는데, 카테캠의 덕도 본거 같다
이전이라면 아예 몰랐을 것들을 음흠? 이렇게 해나가는구나 맥락과 키워드를 알게 된거 같다
감사할 따름이다
Contents
컨텍스트 클래스는 함수형 프로그래밍 패러다임을 준수하기 위해 불변성을 목표로 상태를 캡슐화하는 클래스입니다.
컨텍스트 클래스는 상태를 수집하고 관리하여 애플리케이션의 여러 부분에서 이러한 상태를 공유하고 액세스할 수 있는 방법을 제공합니다
그러나 컨텍스트 클래스의 갯수가 많아지면 의존성 문제를 일으킬 수 있다
또한 순환 참조와 같은 문제가 발생한다거나, 가변 컨텍스트를 멤버로 가진 클래스는 상태 변화를 추적하기 어렵다
게다가 코드도 읽기 어렵게 만든다
Context 클래스 리팩터링 예제
컨텍스트 클래스를 함수현 인터페이스로 변경하고, 컨텍스트 객체를 생성자 인젝션으로 수정한다
또한, 컨텍스트 참조를 파라미터로 받아 읽기 전용으로 사용하고, 상태 변화를 용이하게 합니다
이를 통해 코드의 복잡성을 줄이고 의존성을 분리합니다
함수형 인터페이스를 사용한 의존성 약화
객체의 전환 디퍼펙터링은 호출 비용이 증가하지만, 함수의 전환 디퍼펙터링은 성능이 개선된다.
또한, 자바 9부터는 함수형 인터페이스를 사용하여 객체를 바로 생성할 수 있다.
코드 복잡도
cc(Cyclomatic Complexity)는 함수의 제어문 분기, 루프 등이 없다면 일정 점수를 가지며, 조건식 안에 논리식도 1점입니다
각 점수를 더하여 NPath는 코드를 실행할 수 있는 비순환 경로일수록 높아집니다.
이런 수치를 통해 코드의 복잡도를 측정할 수 있습니다.
함수를 추출해서 코드 복잡도를 줄일 수 있습니다
위의 예제에서는 먼저 빌드 데이터 함수를 2가지 책임으로 나눴습니다
중첩된 if문을 보호구문으로 바꾸면 코드의 복잡도를 줄일 수 있습니다.
밸류 함수를 정리하면서 중첩된 부분들을 정리할 수 있습니다.
또한, 중첩된 if문을 명시적인 조건문으로 대체하면 코드의 가독성도 좋아집니다.
하지만 주의해야 할 점은, 코드 복잡도 계산하는 툴이 실제 코드 복잡도 보다 높게 결과를 내는 경우도 있으니 유의해야 합니다
공부해야 할 키워드
- 보호 구문
- 프로그래밍에서 책임의 범위
- 가변 상태 Context
- Mockito나 @SpringBootTest 없이 테스트 코드를 작성 할 수 있다
- 고차 함수의 정확한 사용 방법
레퍼런스
부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
'ETC > Thinking' 카테고리의 다른 글
📜 너만의 관계를 구축하라 (0) | 2023.11.30 |
---|---|
요즘 이러고 삽니다 (2) | 2023.10.16 |
엘리멘탈 후기 (0) | 2023.07.22 |
내 실력으로 취업이 가능할까 (0) | 2023.07.21 |
살아있는 지지대 (0) | 2023.07.15 |