본문 바로가기
반응형

독서72

[리팩터링] 챕터06. 기본적인 리팩터링(6-6 변수 캡슐화하기) 😀 책에서 기억하고 싶은 내용을 써보세요. 리팩토링 전 let defaultOwner = {firstName: "마틴", lastName: "파울러"}; 리팩토링 후 let defaultOwnerData = {firstName: "마틴", lastName: "파울러"}; export function defaultOwner() {return defaultOwnerData;} export function setDefaultOwner(arg) {defaultOwnerData = arg;} 배경 리팩터링은 결국 프로그램의 요소를 조작하는 일이다. 함수는 데이터보다 다루기가 수월하다. 함수를 사용한다는 건 대체로 호출한다는 뜻이고, 함수의 이름을 바꾸거나 다른 모듈로 옮기기는 어렵지 않다. 여차하면 기존 함수를 .. 2022. 6. 4.
[리팩터링] 챕터06. 기본적인 리팩터링(6 - 5 함수 선언 바꾸기) 😀 책에서 기억하고 싶은 내용을 써보세요. 배경 함수는 프로그램을 작은 부분으로 나누는 주된 수단이다. 함수 선언은 각 부분이 서로 맞물이는 방식을 표현하며, 실질적으로 소프트웨어 시스템의 구성 요소를 조립하는 연결부 역할을 한다. 건축과 마찬가지로 소프트웨어도 이러한 연결분에 상당히 의존한다. 연결부를 잘 정의하면 시스템에 새로운 부분을 추가하기가 쉬워지는 반면, 잘못 정의하면 지속적인 방해 요인으로 작용하여 소프트웨어 동작을 파악하기 어려워지고 요구사항이 바뀔 때 적절히 수정하기 어렵게 한다. 다행히 소프트웨어는 소프트하기 때문에 연결부를 수정할 수 있다. 이러한 연결부에 가장 중요한 요소는 함수의 이름이다. 이름이 좋으면 함수의 구현 코드를 살펴볼 필요 없이 호출문만 보고도 무슨 일을 하는지 파악할.. 2022. 5. 29.
[리팩터링] 챕터06. 기본적인 리팩터링(6 - 4 변수 인라인하기) 😀 책에서 기억하고 싶은 내용을 써보세요. let basePrice = anOrder.basePrice; return (basePrice > 1000); 리팩터링 후 return anOrder.basePrice > 1000; 배경 변수는 함수 안에서 표현식을 가리키는 이름으로 쓰이며, 대체로 긍정적인 효과를 준다. 하지만 그 이름이 원래 표현식과 다를 바 없을 때도 있다. 또 변수가 주변 코드를 리팩터링 하는 데 방해가 되기도 한다. 이럴 때는 그 변수를 인라인 하는 것이 좋다. 절차 대입문의 우변(표현식)에서 부작용이 생기지는 않는지 확인한다. 변수가 불변으로 선언되지 않았다면 불변으로 만든 후 테스트한다. → 이렇게 하면 변수에 값이 단 한 번만 대입되는지 확인할 수 있다. 이 변수를 가장 처음 사용.. 2022. 5. 29.
[리팩터링] 챕터06. 기본적인 리팩터링(6 - 3 변수 추출하기) 😀 책에서 기억하고 싶은 내용을 써보세요. 배경 표현식이 너무 복잡해서 이해하기 어려울 때가 있다. 이럴 때 지역 변수를 활용하면 표현식을 쪼개 관리하기 더 쉽게 만들 수 있다. 복잡한 로직을 구성하는 단계마다 이름을 붙일 수 있어서 코드의 목적을 훨씬 명확하게 드러낼 수 있다. 이 과정에서 추가한 변수는 디버깅에 도움된다. 디버거에 중단점을 지정하거나 상태를 출력하는 문장을 추가할 수 있기 때문이다. 절차 추출하려는 표현식에 부작용은 없는지 확인한다. 불변 변수를 하나 선언하고 이름을 붙일 표현식의 복제본을 대입한다. 원본 표현식을 새로 만든 변수로 교체한다. 테스트한다. 표현식을 여러 곳에서 사용한다면 각각을 새로 만든 변수로 교체한다. 하나 교체할 때마다 테스트 한다. 예시 function pric.. 2022. 5. 29.