refactoring 5

여러 함수를 변환 함수로 묶기, 단계 쪼개기

208p ~ 220p 여러 함수를 변환 함수로 묶기 function base(aReading) {...} function taxableCharge(aReading) {...} //----------------------------------- function enichReading(argReading) { const aReading = _.cloneDeep(argReading); aReading.baseCharge = base(aReading); aReading.taxableCharge = texableCharge(aReading); return aReading; } 소프트웨어는 데이터를 입력받아서 여러 가지 정보를 도출하곤 한다. 이렇게 도출된 정보는 여러 곳에서 사용될 수 있는데, 그러다 보면 이 정..

refactoring 2022.08.02

변수 캡슐화하기, 이름바꾸기, 매개변수 객체 만들기

리팩토링 188p ~ 201p 변수 캡슐화하기(Encapsulate Variable) let defaultOwner = {firstName: "마틴", lastName: "파울러"}; //-------------------------------------------------------- let defaultOwnerData = {firstName: "마틴", lastName: "파울러"}; export function defaultOwner() {return defualtOwnerData } export function setDefaultOwner(arg) {defaultOwnerData = arg; } 리팩토링은 결국 프로그램의 요소를 조작하는 일이다. 함수는 데이터보다 다루기가 수월하다. 함수를 사..

refactoring 2022.08.01

변수 추출하기(Extract), 인라인하기(Inline), 선언바꾸기(change)

리팩토링 173p ~ 187p 변수 추출하기 return 값으로 이렇게 복잡하게 변수로만 되어있다면 이 변수가 무엇을 계산해서 반환하는지 하나씩 다 뜯어봐야한다. return order.quantity * order.itemPrice - Math.max(0, order.quantity - 500) * order.itemPrice * 0.05 + Math.min(order.quantity * order.itemPrice * 0.1, 100); 하지만 아래와 같이 변수로 추출해서 반환한다면 리턴값으로 변수명들만 봐도 어떻게 계산되는 코드를 하나씩 듣어보지 않아도 되게 된다. const basePrice = order.quantity * order.itemPrice; const quantityDiscount ..

refactoring 2022.07.28

함수 추출하기(Extract Function), 인라인하기(Inline Function)

함수 리팩터링 158p ~ 172p 코드를 언제 함수로 묶어야 할지에 대해서는 의견이 수없이 많다. 1. 길이를 기준으로 묶는다. 2. 두 번 이상 사용될 코드는 함수로 만든다. 가장 합리적인 판단은 '목적과 구현을 분리'하는 방식이 가장 합리적인 기준이다. 만약 어떤 코드를 보고 무슨 일을 하는지 파악하는데 한참이 걸린다면 함수로 추출한 뒤 '무슨 일'에 걸맞는 이름을 짓는게 효율적이다. 그럼 다음에 코드를 다시 읽을 때 함수의 목적이 눈에 들어오고, 본문코드에 대해서는 신경쓰지 않아도 된다. 경험상 대여섯 줄을 넘어가면 함수로 만드는게 좋다고 생각된다. 혹 어떤이는 함수를 짧게 만들면 함수 호출이 많아져서 성능이 느려질까 걱정하는 사람도 있다. 요즘은 그럴일이 거의 없다. 함수가 짧으면 캐싱하기가 더..

refactoring 2022.07.27
반응형