Community

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

← Go back
Pragmatic TIL - 5 (2022-03-26)
#pragmatic
2년 전
534

오늘 TIL 3줄 요약

  • 높은 결합도는 변경의 적이다.

  • 이벤트에 잘 반응하는 애플리케이션을 만드는 전략 4가지 (유한 상태 기계, 감시자 패턴, 게시-구독 , 반응형 프로그래밍과 스트림)

  • 다형성은 인터페이스로 표현하는 것이 좋다. ( 인터페이스와 프로토콜은 상속 없이도 다형성을 가져다준다.)

TIL (Today I Learned) 날짜

2022. 03. 26

오늘 읽은 범위

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

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

  • 메서드 호출을 엮지 말라. 무언가에 접근할 때 "."을 딱 하나만 쓰려고 노력해보라. - page.188

  • 전역적이어야 할 만큼 중요하다면 API로 감싸라. - page.191

  • 결합된 코드는 바꾸기 힘들다. 직접적으로 아는 것만 다루는 부끄럼쟁이 코드를 계속 유지하라. - page.192

  • 유한 상태 기계(Finite State Machine,FSM) 은 기본적으로 이벤트를 어떻게 처리할지 정의한 명세이다. - page.194~195

  • 감시자 패턴(observer pattern)은 이벤트를 발생시키는 쪽인 감시대상과 이런 이벤트에 관심이 있는 클라이언트인 감시자로 이루어진다. - page.199

  • 게시(Publish)-구독(Subscribe) 혹은 발행-구독 모델은 줄여서 펍섭(pubsub)이라고도 부르며 감시자 패턴을 일반화한 것이다. 동시에 모델의 결합도를 높이는 문제와 성능 문제도 해결한다. - page.201

  • 반응형 프로그래밍(reactive programming)이란 어떤 셀에 들어 있는 수식에서 다른 셀을 참조하고 있을 때, 참조된 셀의 값을 바꾸면 첫 번째 셀의 값도 바뀐다. 값이 바뀌면 그 값을 사용하는 다른 값이 반응하는(react) 것이다. - page.202

  • 스트림은 이벤트를 일반적인 자료 구조처럼 다룰 수 있게 해 준다. 이벤트의 리스트를 다룬다고 생각하면 된다. - page.202

  • 코드에만 집중하면 핵심을 놓칠 수 있다고 본다. 프로그램이란 입력을 출력으로 바꾸라는 것이라는 사고방식으로 돌아갈 필요가 있다. 이렇게 생각하면 그동안 고민하던 많은 세부 사항이 모두 사라진다. 구조는 명확해지고 더 일관적으로 오류를 처리하게 되어 결합도 대폭 줄어들 것이다. - page.207

  • 프로그래밍은 코드에 관한 것이지만, 프로그램은 데이터에 관한 것이다. - page.210

  • 객체 지향 프로그래밍 경험이 많다면 반사적으로 데이터를 숨기고, 객체 안에 캡슐화해야 한다고 느낄 것이다. 이런 객체들은 서로 이리저리 이야기하며 서로의 상태를 변경한다. 이런 방식은 결합을 많이 만들어내고, 이는 결국 객체 지향 시스템이 바꾸기 어려워지는 큰 요인이 된다. - page.216

  • 상태를 쌓아 놓지 말고 전달하라. - page.216

  • 코드를 일련의(중첩된) 변환으로 생각하는 접근 방식은 프로그래밍을 해방시킨다. - page.222

  • 믹스인으로 기능을 공유하라. 믹스인이란 기능을 구현했을 때 할 수 있는 일, 바로 기존의 것과 새로운 것의 기능 집합을 합치는 것을 의미한다. - page.233

  • 외부 설정으로 애플리케이션을 조정할 수 있게 하라. - page.236

  • 어떤 형태를 사용하든지 애플리케이션을 실행시켰을 때 설정 정보가 애플리케이션의 동작을 제어해야 한다. - page.238

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

  • 책이 진행됨에 있어서 점점 더 나은(실용적인) 프로그래머가 되는 방법을 제시하는 데 이러한 방법들을 머리 속에 잘 새겨 넣어서 더 좋은 개발자가 되기 위해 코드를 작성 해야겠다고 마음먹었습니다.

  • 이번 장은 독자에게 지식을 주려고 하지만 나에게는 온전히 전달되지 않은 것 같다. 그 이유는 책의 내용이 아는 것보다 모르는 것이 많았기 때문에 오히려 쉬운 내용을 읽었을 때보다 더 빨리 책 읽는 것을 마무리한 것 같다.(이해하기 어려워서 나중으로 미룬 것인가? 잘 모르겠다..)

궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

  • 파이프 라인에 대해 처음 듣고 책에서 파이프 라인에 대한 내용을 읽어보았지만 잘 이해가 되지 않았어서 위키백과에서 찾아보고나서야 파이프라인에 대한 약간의 개념이 들어온 것 같습니다

    파이프라인
    컴퓨터 과학에서 파이프라인(영어: pipeline)은 한 데이터 처리 단계의 출력이 다음 단계의 입력으로 이어지는 형태로 연결된 구조를 가리킨다. 이렇게 연결된 데이터 처리 단계는 한 여러 단계가 서로 동시에, 또는 병렬적으로 수행될 수 있어 효율성의 향상을 꾀할 수 있다. 각 단계 사이의 입출력을 중계하기 위해 버퍼가 사용될 수 있다.

오늘 읽은 다른 사람의 TIL