Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
[til] 5장
#pragmatic
2년 전
489

오늘 TIL 3줄 요약

  • 결합도를 줄여야 한다

  • functional 함을 유지해라 (이벤트 중심 사고, 변환 프로그래밍)

  • 상속을 피해라

TIL (Today I Learned) 날짜

2022. 03. 27

오늘 읽은 범위

5장. 구부러지거나 부러지거나

책에서 기억하고 싶은 내용을 써보세요.

이 책의 주요 주장은 바꾸기 쉽게 코딩하자 이다. 그러기 위해선 결함도를 줄여야 한다. 당연하게도 결함이 많아지면 하나를 바꾸었을 때 고려해야 할 요소들이 많아지게 되고 이는 코드를 바꾸기 어렵게 하기 때문이다.

이 책은 결함도를 줄이기 위한 방법으로 다음과 같은 것을 제시한다.

  • 글로벌적인 것을 사용하지 마라. 이는 매개변수 하나를 추가하는 효과를 낼 것이고 글로벌적인 것을 바꾸었을 때 어디에 영향이 퍼지는지 계속 고려해야 할 것이다.

  • 상속 대신 인터페이스나 프로토콜, 위임, 믹스인, 트레이트를 사용해라. parent method 를 모두 공개하고 그것을 사용하게 되면 나중에 parent 를 바꾸었을 때 상속받는 모든 클래스의 변화를 고려해야한다.

  • 변환 프로그래밍을 사용해라. 변환 프로그래밍은 데이터 상태의 변화에만 집중한다. input 과 output 이 같으면 항상 같은 결과를 내는 함수들의 연속이다. 이는 객체가 서로 상호작용하며 내부 값을 바꾸는 형식의 프로그래밍보다 바꾸기도 쉽고 재사용하기도 쉽다.

  • 반응형 프로그램 작성이 필요하다면 이벤트 중심으로 사고해라. 저자는 다음 4 가지 방법을 제시한다.

    • 전략 1. FST 사용 : 가장 단순하게 생각해볼 수 있는 방법이다.

    • 전략 2. observer pattern : observer 에 observable instance 같은 것을 넣어 놓고 이벤트가 발생할 때 마다 obersable instance 의 method 에 message passing 을 하는 패턴이다. 단점은 list 를 돌면서 한 함수씩 실행하기 때문에 synchronize 하다

    • 전략 3. PubSub: observer pattern 에서 observer 가 event 를 날릴 때 channel 에 날리고 observable object 들은 channel 을 구독하고 있는 형태이다. channel 에서 async 한 처리를 맡고 있어 쉽게 구현할 수 있고 channel 이란 추상체를 돌입하여 결합도를 줄였다. 하지만 이벤트 조합에 반응하게 만들기에는 한계가 있다.

    • 전략 4. Reactive programming : 이벤트를 사용하여 코드가 반응하도록 하는 패러다임인 reactive programming 을 활용하라. 이를 원활히 하기 위해 이벤트 collection 을 stream 이라 추상하여 사용한다.