본문 바로가기
반응형

javascript7

[리팩터링 카탈로그] 1-8. 매개변수 객체 만들기 절차 적당한 데이터 구조가 아직 마련되어 있지 않다면 새로 만든다. 테스트한다. 함수 선언 바꾸기로 새 데이터 구조를 매개변수로 추가한다. 테스트한다. 함수 호출시 새로운 데이터 구조 인스턴스를 넘기도록 수정한다. 하나씩 수정할 때마다 테스트 한다. 기존 매개변수를 사용하던 코드를 새 데이터 구조의 원소를 사용하도록 바꾼다. 다 바꿧다면 기존 매개변수를 제거하고 테스트한다. 예시 Before: function amountInvoiced(startDate, endDate) { //... } function amountReceived(startDate, endDate) { //... } function amountOverDue(startDate, endDate) { //... } After: function.. 2021. 12. 6.
[리팩터링 카탈로그] 1-4. 변수 인라인하기 절차 변수가 불변으로 선언되지 않았다면 불변으로 만든 후 테스트 한다. 이 변수를 가장 처음 사용하는 코드를 찾아서 대입문 우변의 코드로 바꾼다. 테스트한다. 변수를 사용하는 부분을 모두 교체할 때까지 이 과정을 반복한다. 변수 선언문과 대입문을 지운다. 테스트 한다. 예시 Before: let basePrice = anOrder.basePrice; return (basePrice > 1000); After: return anOrder.basePrice > 1000; 출처 : 리팩터링 2판 – Chapter6 2021. 12. 5.
[리팩터링 카탈로그] 1-3. 변수 추출하기 추출하려는 표현식에 부작용은 없는지 확인한다 불변 변수를 하나 선언하고 이름을 붙일 표현식의 복제본을 대입한다. 원본 표현식을 새로 만든 변수로 교체한다. 테스트한다. 표현식을 여러 곳에서 사용한다면 각각을 새로 만든 변수로 교체한다. 하나 교체할 때마다 테스트한다. 예시 Before: function price(order) { return ( order.quantity * order.itemPrice - Math.max(0, order.quantity - 500) * order.itemPrice * 0.05 + Math.min(order.quantity * order.itemPrice * 0.1, 100) ); } After: function price(order) { const basePrice = .. 2021. 12. 5.
[리팩터링 카탈로그] 1-2. 함수 인라인하기 다형 메서드polymorphic method인지 확인한다. 인라인할 함수를 호출하는 곳을 모두 찾는다. 각 호출문을 함수 본문으로 교체한다. 하나씩 교체할 때마다 테스트한다. 함수 정의(원래 함수)를 삭제한다. 예시 Before: function getRating(driver) { return moreThanFiveLateDeliveries(driver) ? 2 : 1; } function moreThanFiveLateDeliveries(driver) { return driver.numOfLateDeliveries > 5; } After: function getRating(driver) { return (driver.numOfLateDeliveries > 5) ? 2 : 1; } 출처 : 리팩터링 2판 .. 2021. 12. 5.
반응형