면접을 다니면서 좀 더 준비해야 할 것

역할을 나누고 그 역할별로 해야되는 일을 한정시키는 것

코드를 짜는 것부터 어떤 일을 할때 항상 생각해볼 지점인 것 같다. 어떤 일을 지시 혹은 한다고 가정하였을 때 그 일의 우선순위를 정하고 그 역할을 분해하여서 좀 더 빨리 할 수 있는 작업으로 나누거나 연관성이 있는 일로 나누는 것을 생각하고 작업한다면 일의 효율은 매우 빠른 속도로 오르는 것을 알게 되었다.그 방식이 최근에 디자인 패턴을 만드는 기초 단계이자 OOP 의 핵심 컨셉이라는 것도 알게 되었다.
factiory

역할모델의 중요성

1
2
3
4
5
6
7
8
9
10
11
12
13
const Binder=class{
#items=new Set;
add(v,_=type(v,BinderItem)){ this.#items.add(v) }
render(viewmodel,_=type(viewmodel,ViewModel)){
this.#items.forEach(item=>{
const vm=type(viewmodel[item.viwmodel],VIewModel).el= item.el;
Object.entries(vm.styles).forEach(([k,v])=>el.style[k]=v):
Object.entries(vm.attributes).forEach(([k,v])=>el[k]=v):
Object.entries(vm.event).forEach(([k,v])=>el["on"+k]=e=>v.call(el,e,viewmodel)):
});
}
};

위와 같은 객체 방식에서 사용하는 하나하나의 스타일 정의가 문제이고 이것을 외부에서 작업이 가능하도록 의존성을 부여하는 방식이 필요하다라는 점에 대한 공부가 좀 더 필요하다는 것을 느꼈다.

알고리즘에 대한 정확한 인식

이진트리를 예시로 든다고 하면 전위, 후위에 대한 정확한 파악 그리고 Doubly linked list(이중 연결 리스트) 와 같은 구조를 스스로 직접 만드는 방식도 완전히 머리에 추가하고 다시 한번 더 공부해야한다는 것을 알게 되었다. 또한 살짝만 알고 있었던 제네릭 알고리즘에 대해서도 코드를 보고 직접 만져보고 직접 쳐보고 경험해봐야 할 것 같다.