개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
결합도가 낮은 코드로 만들기
자바스크립트의 다양한 디자인 패턴
이벤트가 잘 일어나도록 의도적으로 만들어줘야 한다.
TIL (Today I Learned) 날짜
2022. 05. 21
오늘 읽은 범위
5장.구부러지거나 부러지거나
책에서 기억하고 싶은 내용을 써보세요.
결합도가 낮은 코드가 바꾸기 쉽다(p.184)
결합도가 높은 코드의 증상(p.184)
- 관계없는 모듈이나 라이브러리 간의 희한한 의존 관계
- 한 모듈의 '간단한' 수정이 이와 관계없는 모듈을 통해 시스템 전역으로 퍼져 나가거나 시스템의 다른 곳에서 무언가를 깨뜨리는 경우
-개발자가 수정하는 부분이 시스템에 어떤 영향을 미칠지 몰라 코드의 수정을 두려워하는 경우
-변경 사항에 누가 영향을 받는지 파악하고 있는 사람이 없어서 결국 모든 사람이 참석해야 하는 회의
묻지 말고 말하라(p.186)
이 원칙은 다른 객체의 내부 상태에 따라 판단을 내리고 그 객체를 갱신해서는 안된다는 것이다.
메서드 호출을 엮지말라(p.188)
ex) 좋지 않는 방식들 예시
amount = customer.orders.last().totals().amount
--------------
orders = customer.orders;
last = orders.last();
totals = last.totals();
amount = totals.amount;
전역 데이터는 여러가지 방법으로 코드의 결합도를 높인다.(p.190)
코드를 재사용할 수 있게 하려면 깨끗한 인터페이스를 만들고 나머지 코드와의 결합을 없애야 한다.(p.190)
전역 데이터를 쓰는 코드에 단위 테스트를 만들다 보면 이런 문제를 발견하게 된다. 그저 테스트를 실행하려는 것뿐인데 전역 환경을 생성하는 코드를 한참이나 써야한다.(p.190)
싱글턴(singleton)도 전역데이터다.(p.191)
외부 리소스도 전역 데이터다.(p.191)
전역적이어야 할 만큼 중요하다면 API로 감싸라.(p.191)
그냥 일어나는 일은 없다. 일어나도록 만들어진 것이다-존케네디(p.193)
이벤트에 잘 반응하는 애플리케이션 만들기(p.194)
-유한 상태 기계
-감시자(observer)패턴
-게시-구독
-반응형 프로그래밍과 스트림
자신이 하고 있는 걸 하나의 과정으로 서술할 수 없다면, 자기가 뭘 하고 있는지 모르는 것 이다-w.에드워즈 데밍(p.207)
프로그래밍은 코드에 관한 것이지만, 프로그램은 데이터에 관한 것이다.(p.210)
상태를 쌓아 놓지 말고 전달하라.(p.216)
당신이 원한 것은 바나나 하나였지만, 당신이 받은 것은 바나나를 들고 있는 고릴라와 정글 전체다.-조 암스트롱(p.224)
다향성은 인터페이스로 표현하는 것이 좋다.(p.230)
믹스인으로 기능을 공유하라(p.235)
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
앞장에서 얘기 했던 내용을 깊게 정리한 느낌이 들었다. 결합도 높은 코드를 쓰지말도록 노력해야해! 방법은 전역데이터 덜 쓰도록 노력하고 상속을 줄때 조심하고... 등등 하지말라는것보다 상황에 맞게 쓰라는 얘기를 하셨다.엄마의 잔소리 같기도....
읽으면서 조금 벅찼다. 왜냐하면 비동기는 알고 있지만 아직도 헷갈리는 개념이고 디자인 패턴에 대해서 처음 알았다. 디자인패턴을 알려면 내가 보기엔 기초적인 지식부터 쌓고 디자인패턴에 대해서 공부하는 게 좋다는 생각이 들었다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
싱글턴: 하나뿐인 객체
싱글턴 패턴: 전체 시스템에서 클래스의 인스턴스를 하나만 존재하도록 하는 패턴
이벤트 부분을 읽으면서 내가 제일 약한 부분인 '비동기'가 생각났다. 또 다시 공부해야겠다는 생각을 했다.
파이프라인에 대해서 처음 알았다.
파이프라인이 왜 사용되었는데 이해갔던 글이었다(https://dev.to/composite/javascript-25g9)
다형성(polymorphism)이란 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미