|
1 | | -# todo |
2 | | -레벨2 |
| 1 | +## STEP5-3 : TUNA & YM 리뷰 내용 반영 |
| 2 | + |
| 3 | +# |
| 4 | +#### 1. comment : 전체코드의 들여쓰기가 너무 깊은데요? 좋은 indent 가 무엇인지 한번찾아볼래요? |
| 5 | + |
| 6 | +- 전체 코드 indent 수정 : tab 인덴트를 space * 4 로 수정 |
| 7 | +- 원인 : pair를 위해 구름 ide에서 작업 중, local으로 옮기면서 indent 오반영 |
| 8 | + |
| 9 | +원래 ide의 설정은 tab이 space * 4 의 indent로 설정되어 있습니다. |
| 10 | +앞으로 들여쓰기가 올바르게 되어있는지, 불편하지 않은지 신경쓰도록 하겠습니다 |
| 11 | + |
| 12 | +# |
| 13 | + |
| 14 | +#### 2. comment : 주석이 필요한.. arguments.length 로 구별하는 방식을 어떻게 개선할 수 있을까요? |
| 15 | + |
| 16 | +- 리뷰 이전 |
| 17 | +```javascript |
| 18 | +if (argument.length === 3) // updaste |
| 19 | +... |
| 20 | +} else if (arguments.length === 2) { // add, delete |
| 21 | +``` |
| 22 | +
|
| 23 | +- 리뷰 이후 : 의미가 불분명해 주석이 필요했던 if statement 수정 |
| 24 | +
|
| 25 | +```javascript |
| 26 | +if (command === 'update') { |
| 27 | + ... |
| 28 | +} else if (command === 'add' || command === 'delete') { |
| 29 | + ... |
| 30 | +} |
| 31 | +``` |
| 32 | +
|
| 33 | +# |
| 34 | + |
| 35 | +#### 3. utils 클래스의 deepCopy 메서드의 이해 |
| 36 | +
|
| 37 | +- 원래 object.assign으로 얕은 복사를 썼으나, 예상한 방식대로 동작하지 않아 깊은 복사를 지원하는 deepCopy 유틸을 만들었습니다 |
| 38 | +- 메서드는 검색을 통해 참고했으나, 참조 레퍼런스의 순수한 값만 복사하는 deep copy의 작동 방식은 이해했습니다 |
| 39 | +
|
| 40 | +# |
| 41 | +
|
| 42 | +#### 4. comment : 시작하는 것은 굳이 class로 만들지 않아도 될거 같아요. 사용일 될 일이 정말 없을 거 같은 부분이기도 하니까요. |
| 43 | +
|
| 44 | +```javascript |
| 45 | +const RunTodoApp = class { |
| 46 | + constructor() { |
| 47 | + this.cmdArr = ['show','delete','update','add','undo','redo']; |
| 48 | + this.commandParser = new CommandParser(); |
| 49 | +``` |
| 50 | +
|
| 51 | +- 프로그램 실행을 담당하는 app.js의 class를 제거한 후, 리팩토링했습니다. |
| 52 | +
|
| 53 | +# |
| 54 | +
|
| 55 | +#### 5. comment : promise패턴을 사용했는데요. then메서드를 사용했을때의 장점은 무엇이라고 생각되세요? |
| 56 | +
|
| 57 | +```javascript |
| 58 | + this.utils.delay(0) |
| 59 | + .then(() => {if (cmdList[0] === 'update') return this.utils.delay(3500);}) |
| 60 | +``` |
| 61 | +
|
| 62 | +- then메서드를 사용했을 경우, 새로운 프로미스 객체가 반환되어 여러 개의 Promise를 체이닝할 수 있습니다. |
| 63 | +- 따라서, 여러 개의 비동기 작업을 수행할 경우, 보다 쉽게 비동기를 제어할 수 있다는 장점이 가장 큰 장점 같습니다. |
| 64 | +- error 처리 또한 catch로 손쉽게 할 수 있다는 점도 장점입니다. |
| 65 | +
|
| 66 | +# |
| 67 | +
|
| 68 | +#### 6. comment : 이부분은 객체리터럴 vs. 클래스! 중 어떤 것이 더 어울릴까요? |
| 69 | +```javascript |
| 70 | +const CustomException = class { |
| 71 | +``` |
| 72 | +- 에러 처리는 변하는 값이 아닌 특수한 상황에서만 사용되는 고정된 값입니다. 따라서 동적인 인스턴스를 지원하는 class를 사요할 필요 없이 |
| 73 | +속도가 빠르고 메모리 자원을 낭비하지 않는 리터럴이 적합하다 생각합니다. |
0 commit comments