구부러지거나 부러지거나

오늘 TIL 3줄 요약

  • 결합도가 낮은 코드가 바꾸기 쉽다.
  • 프로그래밍은 코드에 관한 것이지만, 프로그램은 데이터에 관한 것이다.
  • 다형성은 인터페이스로 표현하는 것이 좋다.

TIL (Today I Learned) 날짜

2022. 03. 26

오늘 읽은 범위

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

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

  • 소프트웨어 구조는 유연해야 한다.
  • Tip 45 묻지 말고 말하라. (Tell, Don't Ask, TDA.)
  • 이 원칙은 다른 객체의 내부 상태에 따라 판단을 내리고 그 객체를 갱신해서는 안 된다는 것이다.
  • 무언가에 접근할 때 "."을 딱 하나만 쓰려고 노력해 보라. '무언가에 접근'한다는 건 중간 변수를 사용하는 경우까지 포함해야 한다.
  • 코드를 재사용할 수 있게 하려면 깨끗한 인터페이스를 만들고 나머지 코드와의 결합을 없애야 한다.
  • Tip 47 전역 데이터를 피하라.
  • 직접적으로 아는 것만 다루는 부끄럼쟁이 코드를 계속 유지하라.
  • 어디에서 온 것이든 애플리케이션을 이런 이벤트에 반응하도록, 그리고 그에 기반해서 하는 일을 조절하도록 만들면, 진짜 세상에서 더 잘 작동하는 애플리케이션이 탄생할 것이다. 사용자들은 애플리케이션의 상호 작용이 더 원활하다고 느낄 것이고 애플리케이션 자체는 리소스를 더 효율적으로 사용할 것이다.
  • 이벤트가 어디서 발생하든 이벤트를 중심으로 공들여 만든 코드는 일직선으로 수행되는 코드보다 더 잘 반응하고 결합도가 더 낮다.
  • 프로그램이란 입력을 출력으로 바꾸는 것이라는 사고방식으로 돌아갈 필요가 있다. 이렇게 생각하면 그동안 고민하던 많은 세부 사항이 모두 사라진다. 구조는 명확해지고 더 일관적으로 오류를 처리하게 되어 결합도 대폭 줄어들 것이다.
  • 요구 사항에서 입력과 출력이 무엇인지 찾으면 전체 프로그램을 나타내는 함수가 정해진다.
  • 데이터를 전체 시스템 여기저기의 작은 웅덩이에 흩어 놓는 대신, 데이터를 거대한 강으로, 흐름으로 생각하라.
  • 아무리 복잡한 클래스 계층도가 마음에 들더라도 어차피 여러분의 도메인을 정확하게 모델링할 수는 없다.
  • Tip 53 서비스에 위임하라. Has-A가 Is-A보다 낫다.
  • 프로그래밍의 다른 모든 것과 마찬가지로 여러분의 목표는 의도를 가장 잘 드러내는 기법을 사용하는 것이어야 한다.
  • 애플리케이션이 출시된 이후 바뀔 수도 있는 값에 코드가 의존하고 있다면 그 값을 애플리케이션 외부에서 관리하라. 여러분의 애플리케이션이 여러 환경에서 혹은 여러 고객을 위해 실행된다면 특정 환경이나 특정 고객에게 한정된 값을 애플리케이션 외부에서 관리하라.
  • 대신 설정 정보를 (얇은) API 뒤로 숨겨라. 그러면 설정을 표현하는 세부 사항으로부터 여러분의 코드를 떼어놓을 수 있다.

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

이벤트에 잘 반응하는 애플리케이션 만드는 전략들을 소개하는 부분이 재미있었다. iOS 개발하면서 많이 경험했던 것들도 있었고, FSM은 한번 적용해보고 싶었다.

루비, 엘릭서로 작성된 예제 코드도 재미있었다.

오늘 읽은 다른 사람의 TIL

2022. 03. 26. DAY 09