본문 바로가기

JavaScript│Node js67

마틴 파울러 리팩토링 Replace Type code with Subclasses 종종 코드로 비슷한 것들을 만들어내야 할 때가 있습니다. 그럴 때 서브 클래스를 활용 할 수 있습니다. 이번에는 아래 코드를 function createEmployee(name, type) { return new Employee(name,type); } 아래 코드로 바꿉니다 function createEmployee(name, type) { switch (type) { case "engineer": return new Engineer(name); case "salesman": return new Salesman(name); case "manager": return new Manager(name); } } 위의 코드처럼 타입을 넣으면 되긴 합니다. 하지만 이렇게 서브 클래스를 사용하면 2가지 것이 가능합니.. 2020. 1. 10.
Nestjs 외부 모듈에 정의된 타입 사용하기 이 글을 통해서 얻으실 수 있는 것 npm 외부 모듈에 타입을 정의하고 Nestjs 프로젝트에서 사용하는 방법 Typescript 를 사용할 때 좋은 장점은 프론트의 Reactjs 앱과 같은 타입을 공유 할 수 있다는 것입니다. 외부 모듈에 타입을 정의하고 가져다 쓰는 방법을 소개합니다. 시행착오를 조금 겪었습니다. 처음엔 interface를 써서 타입을 정의하려고 해봤습니다. 하지만 nest js 에서는 interface 는 @ApiBody에서 type 으로 쓸 수 없습니다. class나 enum 만 @ApiBody의 type 으로 사용 가능합니다. @Inject를 해서 사용하는 것도 고려해봤지만 interface 는 @Inject 해서 컨트롤러의 타입으로 쓸 수 없습니다. 그래서 결론은 아래 내용처럼.. 2020. 1. 9.
마틴 파울러 리팩토링 Push down field 아래 코드를 class Employee { private String quota; } class Engineer extends Employee {...} class Salesman extends Employee {...} 아래 코드처럼 바꾼다 class Employee {...} class Engineer extends Employee {...} class Salesman extends Employee { protected String quota; } 만약 필드가 하나의 서브 클래스에서만 사용된다면 상위클래스에 두지 말고 하위 클래스로 옮긴다. 예제에서는 Employee 클래스에서 Salesman 클래스로 옮겼다. 2020. 1. 3.
마틴 파울러 리팩토링 Replace Query with Parameter 아래 코드를 targetTemperature(aPlan) function targetTemperature(aPlan) { currentTemperature = thermostat.currentTemperature; // rest of function... } 아래 코드로 바꿉니다. targetTemperature(aPlan, thermostat.currentTemperature) function targetTemperature(aPlan, currentTemperature) { // rest of function... } Replace Parameter with Query 를 반대로 합니다. 함수의 정의된 부분을 봤을 때 맨 위의 코드처럼 참조를 사용하는게 좋지 않을 때가 있습니다. 이건 보통 전역변수에.. 2020. 1. 2.
마틴 파울러 리팩토링 Replace temp with Query 아래 코드를 availableVacation(anEmployee, anEmployee.grade); function availableVacation(anEmployee, grade) { // calculate vacation } 아래 코드로 바꿉니다. availableVacation(anEmployee); function availableVacation(anEmployee) { const grade = anEmployee.grade; // calculate vacation... } 함수의 파라미터 목록은 요약 될 필요가 있습니다. 모든 코드가 그렇겠지만 내용이 중복되는 것을 피해야 합니다. 당연하겠지만 파라미터 목록이 짧으면 이해하기 더 쉽습니다. 파라미터를 없애기 가장 좋은 경우는 위의 예제처럼 같은 .. 2019. 12. 24.