6장
코드를 언제 함수로 묶을 것인가?
코드가 무슨일을 하는지 모르겠을 때, 이름을 지어준다.
표현식이 무슨 값을 나타내는지 복잡할 때, 지역변수로 만든다.
Q. 변수로 만들어야 할 때, 함수로 만들어야 할 때 차이가 뭘까?
책에서 넓은 의미로 쓰일 떄는 함수로 추출해야한다고 하는데 동의 되지 않는다.
함수는 여러 행위를 하고
변수는 값이다. 데이터이다.
함수도 데이터가 될 수 있지만, 그것을 처리하는 과정이 더 중요하지 않을까 싶다.
이름과 매개변수를 바꿀 때 사용
함수가 외부 세계와 어우러지는 방식을 재정의
매개변수를 올바르게 선택하기란 정답이 없다.
상황에 따라 더 나은 순간이 존재할 뿐
함수와 데이터의 차이
데이터(변수)는 직접 데이터를 접근하고 있고,
함수는 링크드리스트 형식으로 데이터를 접근할 수 있다.
따라서 값을 수정할 때, ...
코드스피츠에 나오는 더블 디스패치의 개념이 아닐까 생각도 해봤지만,
이 원리는 변수에서도 동일하게 적용할 수 있지 않을까?
변수는 그냥 값이고
함수는 그냥 함수이다.
함수의 호출을 했을 때, 리턴문이 있다면 해당 리턴문이 값으로 된다.
함수는 함수고, 변수는 값이다.
함수는 호출을 해야한다.
레코드 캡슐화는 클래스화 하기이다.
이 리팩터링의 진정한 힘은 코드를 더 근본적으로 바꿔준다는 데 있다.
클래스를 만들기 위한 밑 작업
데이터 뭉치는 클래스로 만들기 적합하다. 이견이 없다.
매개변수에서 데이터 뭉치를 발견하기 쉽다는 사실이 놀라운 것 같다.
장점
데이터와 함수를 하나의 공유환경으로 묶어, 응집도를 높이는 구조를 가질 수 있게 하고
필요한 부분만 노출시킴으로 데이터의 안정성을 높이며
무엇을 노출시킬지 명시함으로써 객체의 쓰임(의미, 왜)을 코드에 반영한다.
10장
보면 볼 수록 멋진거 같고 내 코드에 적용해보고 싶기도하고,
클래스 문법에 익숙해질 수 있는 시간을 주는것 같은 느낌이다