구부러지거나 부러지거나
오늘 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은 한번 적용해보고 싶었다.
루비, 엘릭서로 작성된 예제 코드도 재미있었다.