DAY 5
오늘 읽은 범위 : 5장 구부러지거나 부러지거나
책에서 기억하고 싶은 내용을 써보세요.
이 원칙은 다른 객체의 내부 상태에 따라 판단을 내리고 그 객체를 갱신해 서는 안 된다는 것이다. 객체의 내부 상태를 묻는 것으로 인하여 캡슐화 encapsulation의 장점은 완전히 사라지고, 또 그 과정에서 구현에 대한 지식이 코드 여기저기로 퍼져 버린다
데메테르라는 프로젝트를 수행하는 도중 개발자들에게 보다 깨끗하고 결합도가 낮은 함수를 작성하는 방법을 알려주기 위해 만들었다.
메서드 호출을 엮지 마라.
직접적으로 아는 것만 다루는 부끄럼쟁이 코드를 계속 유지하라. 그러면 애플리케이션의 결합도를 낮게 유지할 수 있을 것이고, 결과적으로 코드를 바꾸기 쉬워질 것이다.
그냥 일어나는 일은 없다. 일어나도록 만들어진 것이다.
우리는 “초기 상태”에서 시작한다. 헤더 메시지를 받으면 “메시지 수신 중” 상태로 이행한다. 별표가 붙은 선의 의미는 초기 상태에서 헤더가 아닌 메시지를 받으면 “오류” 상태로 이행하고 끝난다는 것이다.
“메시지 수신 중” 상태에서는 두 가지 메시지를 받을 수 있다. 데이터 메시지를 받으면 현 상태에서 계속 메시지를 받고, 트레일러 메시지를 받으면 “완료” 상태로 이행한다. 그 밖의 다른 메시지를 받으면 “오류” 상태로 이행한다.
자신이 하고 있는 걸 하나의 과정으로 서술할 수 없다면, 자기가 뭘 하고 있는지 모르는 것 이다.
프로그램이 란 입력을 출력으로 바꾸는 것이라는 사고방식으로 돌아갈 필요가 있다. 이 렇게 생각하면 그동안 고민하던 많은 세부 사항이 모두 사라진다. 구조는 명 확해지고 더 일관적으로 오류를 처리하게 되어 결합도 대폭 줄어들 것이다.
당신이 원한 것은 바나나 하나였지만, 당신이 받은 것은 바나나를 들고 있는 고릴라와 정글 전체다.
더는 상속을 쓸 필요가 없게 해 주는 세 가지 기법을 소개하겠다.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요.
결합도를 낮추기 위하여 현재도 고민이 많고 노력중이다.
상속 부분에서 객체지향에 대한 구절이 나왔는데, 자바스크립트에서 class라는 개념이 비교적 최신인 ES5에 추가되었다. 객체지향에는 상속, 다향성, 캡슐화, 은닉, 추상화에 대한 개념을 충분히 숙지하고 사용해야 한다.
이 부분에 대해서는 최근에 공부를 꾸준히 하고있는데, 역시 어렵다. 객체지향에 익숙해 지도록 전문서적, 글, 강의 등을 통하여 노력해야겠다.