본문 바로가기

JavaScript│Node js67

Typescript-rest 로 만든 프로젝트 tsoa로 개편 Typescript-rest 로 만든 api 를 tsoa로 개편했다. 바꾸게 된 이유는 아래와 같다. 1. 점점 잠잠해져가는 Typescript-rest 커뮤니티 2. tsoa는 swagger 3.0도 지원된다. 3. 점점 살아나는 tsoa 커뮤니티 Typescript-rest 저장소 링크 https://www.npmjs.com/package/typescript-rest typescript-rest A Library to create RESTFul APIs with Typescript www.npmjs.com tsoa 저장소 링크 https://www.npmjs.com/package/tsoa tsoa Build swagger-compliant REST APIs using TypeScript and Nod.. 2019. 12. 9.
마틴 파울러 리팩토링 - Replace conditional with polymorphism switch 문을 javascript의 클래스를 사용해서 리팩토링 한다. switch(bird.type) { case 'EuropeanSwallow': return "average"; case 'AfricanSwallow': return (bird.numberOfCoconuts > 2) ? "tired" : "average"; case 'NorwegianBlueParrot': return (bird.voltage > 100) ? "scorched" : "beautiful"; default: return "unknown"; } 이 코드를 아래 코드 처럼 바꾼다. class EuropeanSwallow { get plumage() { return "average"; } } class AfricanSwallo.. 2019. 12. 4.
마틴 파울러 - 리팩토링 Remove Dead Code if(false) { doSomethingThatUsedToMatter(); } motivation 코드를 작성하다보면 사용하지 않는 코드가 발생하기도 한다. 이건 아무런 경고나 에러메세지도 표시하지 않는다. 이렇게 쓰이지 않는 코드가 있으면 코드를 이해하는데 시간이 더 오래 걸리게 된다. 이런 코드는 지운다. 나중에 언제 쓰이겠지 라는 걱정은 안해도된다. 정말로 쓰인다면 git 으로 되돌린다. 정말로 언젠가 쓰일지도 모르겠다고 생각이 들면 주석을 남긴다. // ㅁㅁㅁ 하는 코드가 있었는데. 삭제됨 하지만 저자는 언제 마지막으로 이런 주석을 남겼는지 기억나지 않는다고 한다. git 과 같은 버전관리 툴이 있기 전에는 쓰지않는 Dead code에 주석 처리해두는 것이 일반적인 습관이었다. 지금은 할 필요가.. 2019. 11. 20.
마틴 파울러 - 리팩토링 Replace loop with Pipeline const names = []; for(const i of input) { if(i.job === "programmer") names.push(i.name); } const names = input .filter(i => i.job === "programmer") .map(i => i.name) ; for 문과 if문으로 구성된 코드를 filter 와 map으로 바꾼다. motivation 파이프라인을 사용하면 코드를 더 간결하게 작성할 수 있다. 로직을 보기 쉽게 작성하자. 순서 예제 csv 파일을 읽는 아래 코드가 있다고 한다. function acquireData(input) { const lines = input.split("\n"); let firstLine = true; const result.. 2019. 11. 20.
[리팩토링]Replace switch statement with Object 참고한 글 https://ultimatecourses.com/blog/deprecating-the-switch-statement-for-object-literals 아래와 같은 코드에서 보통 switch case 문을 사용해서 개발을 한다. function getDrink (type) { if (type === 'coke') { type = 'Coke'; } else if (type === 'pepsi') { type = 'Pepsi'; } else if (type === 'mountain dew') { type = 'Mountain Dew'; } else if (type === 'lemonade') { type = 'Lemonade'; } else if (type === 'fanta') { type =.. 2019. 11. 8.