181019 TIL Lec3 할일관리 step3

» 1막, TIL (Today I Learned)

Endless 오류 수정

  • 오늘만 네 명한테 코드 테스트를 부탁했는데, 계속 오류가 발견되었다. 얏호!
  • 계속 문제가 됐던 부분은 아래.. update error case 처리하는 부분이다.
    update(updateObj) {
        let answer = false;
        for (const values of todo.taskList) {
            if (updateObj.id === values.id) {
                answer = true;
            }
            if (answer === true) {
                const statusToUpdate = updateObj.nextstatus.trim().toLowerCase();
                if (statusToUpdate === values.status) {
                    console.log(`[error] ${values.id}번은 이미 ${statusToUpdate}입니다.`);
                    answer = false;
                    return answer;
                }
                const statusOrder = ['todo', 'doing', 'done'];
                if (statusOrder.indexOf(values.status) > statusOrder.indexOf(statusToUpdate)) {
                    console.log(`[error] ${values.status} 상태에서 ${statusToUpdate} 상태로 갈 수 없습니다.`);
                    answer = false;
                    return answer;
                }
                if (statusOrder.indexOf(statusToUpdate) - statusOrder.indexOf(values.status) > 1) {
                    console.log(`[error] 단계를 건너뛸 수 없습니다.`);
                    answer = false;
                    return answer;
                }
                if(answer) {return answer}
            }
        }
        if (!answer) {
            console.log(`[error] ${updateObj.id}번 아이디는 존재하지 않습니다.`);
            return answer;
        }
    },
  • 별거 아닌 거 같은데, 짜잘하게 계속 에러가 나서 넘 화난다!!

  • 밤코하면서 토르코가 마지막으로 발견해준 오류는

    • undo() - undo() - undo() - add () - undo() 했을 땐 add에 대한 undo()가 실행이 되어야 하는데 안됨… undo count로 할 게 아니라 뭔가.. 다른 방법을 써야할 듯
    • update하고 undo했을 때 taskList에 status 업데이트가 안됨…ㅎ.. undoUpdate에서 update 이후의 객체로 taskList 갈아끼워줘야할 듯

새로 알게 된 개념

history.cacheList.push('add', Object.assign({}, task));
요렇게 하면 나중에 cacheList를 수정해도 이 때 객체 값엔 영향을 주지 않는다! 

주말 todo

  1. 알바
  2. step3 오류 2개 수정
  3. 알고리즘 1문제