과제를 제출했었는데, 코드리뷰를 받았다.
과제는
1. 이진트리 전위, 중위, 후위 순회 구현
2. 트라이로 문자열 자동완성 구현
리뷰를 받고 리팩토링하며 배울때 깨달은 점들을 써보자.
원래 한줄짜리 조건문은 중괄호를 생략해도된다
if(isTrue) return "hi";
사람의 실수는 언제나 있을 수 있으니 한줄도 중괄호로 감싸는 규칙이다.
if(isTrue){
return "hi"
}
오케이 인정
preorder() {
let current = this.root;
function traverse(current) {
if (current.left) traverse(current.left);
if (current.right) traverse(current.right);
}
traverse(current);
return visited;
}
재귀함수 로직을 항상 생각하기 어려워, 내부의 헬퍼함수를 구현해서 사용했는데 이번에야말로 내부함수 없이 재귀로 리팩토링 해보았다.
preorder(current = this.root, visited = []) {
visited.push(current.value);
if (current.left) this.preorder(current.left, visited);
if (current.right) this.preorder(current.right, visited);
return visited;
}
보기 한결 낫군.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Private_class_fields
private class field라는 걸 알려주셨다.
쉽게 말해, 인스턴스에서는 사용할 수 없는 기능이란 거지.
은닉화가 되어있는 필드다.
static field랑 뭐가 다른거지?
=> 정적 메소드는 클래스 자체에 추가되어 new
연산자 없이 호출. private 메소드는 바깥에서 아예 호출 불가능.
그렇고만!
End Of File의 약자다.
파일의 끝을 나타내며, 소스로부터 더 읽어올 데이터가 없다는걸 말한다는데.
멘토님이 EOF를 챙기라고 하셨다.
으잉?
=> 정해놓은 로직과, 테스트했던 코드를 구분하라는 의미같다. 나중에 여쭤봐야겠다.