개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
응집도는 높이고 결합도는 줄인다.
디미터 함수의 법칙
MVC 패턴은 적은 비용으로 큰 유연성을 얻는다.
TIL (Today I Learned) 날짜
2022.03.26-2022.03.26
오늘 읽은 범위
5장. 구부러지거나 부러지거나
책에서 기억하고 싶은 내용을 써보세요.
결합도 줄이기
적게 연결된 코드가 바꾸기 쉽다.
왜 의존의 증가가 나쁠까? → 시스템 어딘가의 무관한 변화가 코드의 영향을 미칠 수 있는 위험이 커진다.
디미터 함수 법칙
프로그램에서 모듈 간 결합도를 최소화한다.
한 객체가 제공하느 메서드에 접근하기 위해 또 다른 객체들을 통하는 것을 허용하지 않는다.
주 계약자 → 모든 하부 계약자를 직접 관리, 이를 위임한다.
메타 프로그래밍
세부사항을 코드에서 몰아낸다.
즉, 우리 코드는 설정가능해 지며 소프트해져 변화에 쉽게 적응할 수 있다.
코드에는 추상화를, 메타데이터에는 세부 내용을.
시간적 결합
시간이나 순서에 따른 의존성 끊기.
UML 활동다이어그램 → 사용자들의 작업흐름을 모델화하는 기법
작업흐름 분석을 통해 동시성을 개선하고 병렬성을 극대화한다.
배고픈 소비자 모델
중앙 일정 관리자 대신 여러 개의 독립적인 소비자 작업들과 중앙집중식 작업 큐를 사용.
MVC (Model, View, Controller)
다시한번 확인하는 좋은 모듈(클래스)란? → “잘 정의된 단 하나의 책임만 가지는 것”
UML 시퀀스 다이어그램 → 객체들을 세로줄로 나열해 놓고, 그 객체들 사이의 메시지 흐름을 보이는 다이어그램.
MVC 핵심은 모델을 표시하는 뷰, 뷰를 관리하는 컨트롤러에서 모델을 분리해 내는 것.
모델: 대상 객체를 나타내는 추상 데이터 모델.
뷰: 모델을 해석하는 방법. 뷰는 모델의 변화 그리고 컨트롤러가 보내는 논리적 사건을 구독.
컨트롤러: 뷰를 제어학 모델에 새로운 데이터를 제공하는 방법. 모델과 뷰 둘 모두에 이벤트를 보냄.
칠판
비동기적으로 데이터를 주고받는 공간(개념)으로 객체들 사이의 결합을 완전히 끊을 수 있다.
칠판을 사용해 작업흐름을 조율한다.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
다른 분들의 TIL를 읽다가 왠지 책의 구성이 조금 다른 것 같다는 생각이 들었다. 같은 책이었나 하는 마음에 식은땀이..😇 구조적인 부분에서의 결합도와 응집도를 계속 설명했다면 이번 챕터에서는 시간적 결합과 시간적 결합을 완전 독립시킬 수 있는 칠판의 개념에 대해 배우는 유익한 시간이었다. 무엇보다도 실제로 이벤트에 따른 결합도가 가능할까 책을 읽는 동안 내내 가지고 있었던 고민이 어느정도 (이론적으로) 해결된 것 같아 유익했다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
여러 소비자의 부하를 개선하는 배고픈 소비자 모델.
오늘 읽은 다른사람의 TIL