Closed sososimsim closed 6 years ago
코드를 보면서 고민 됐던 포인트를 주절주절 해보면.. Container가 없다면 Navigator, Indicator 독립적으로 의미가 있나? 없다면 Container가 Navigator, Indicator 인스턴스를 생성하고 가지고 있는 구조가 되어야하지 않나? 하지만 지금 구조처럼 같은 따로 분리하면 재사용은 가능하겠다. 그런데 다른 곳에서 재사용이 가능한가?
그리고 (개발)사용자의 입장에서 이 라이브러리를 쓸때 필요하다고 생각되는 부분.
Events Class는 우리 event라 얼핏 보면 헷갈릴수 있어서 이름 변경하면 좋을거 같아요. 코드 가독성이 좋고 객체의 응집도가 좋은것 같아요! :)
슬라이드 3개 중에서 3페이지로 이동한다고 하면
요런식으로 각각의 동작이 동시에 일어나는 것을 생각하고 있었는데요. 지금 다시 보니 Navigator, Indicator에서 일어나는 동작을 추가로 구현하지 않았었네요..^_ㅠ 지금 상태로는 trigger만 하고 있어서 굳이 나눌 필요가 있나...? 하는 생각이 더 들게 되는 것 같아요.
따로 분리하면서 원래 생각했던 것들은 이런 것들이었어요.
추가 컴포넌트가 붙는 식으로 확장될 일이 거의 없을 거라는 전제라면, 오히려 아예 직접적으로 인스턴스들을 가지고 관리하는 것이 나을 수도 있다는 부분은 다시 고민해봐야할 것 같아요.🤒 (재사용의 단위가 Indicator, Navigator 요 단위가 아니라 그냥 캐러셀 한덩어리 단위여야 맞나 싶기도 하고...)
사실 나 이외의 개발자가 사용할 수 있는 라이브러리를 개발해본 경험이 거의 없어서,
요것도 지금 좀 고민이 되는 것 같아요. 이건 스터디원들과도 추가로 논의해보아야겠습니다.
처음 시작할 때는 (저는) 어떤 이벤트들을 열어둘까? 는 따로 정해보지 않고,
같이
var carousel = new SP({
selector : ".some-selector",
navigator : "arrow",
indicator : "dots",
autoslide : false,
infinite : false
});
요런식으로 생성할 때 주는 옵션들만 생각해보았거든요.
개요
pub/sub 패턴을 사용해서
각각이 Controller가 발행하는 이벤트를 수신해서 동작하도록 고쳐보았습니다.
상세
pub/sub 적용에 대한 생각
패턴 자체적으로 이벤트를 발행하는 입장에서 이 이벤트를 어디에서 수신해서 어떤 일이 일어날 지를 예측하기 어려워질 수 있다는 문제가 있지만, Carousel은 규모가 큰 프로젝트가 아니라 문제되지 않을 정도라고 생각했어요.
TODO & 생각거리(?)
[ ] Navigator에서 '다음' 화살표를 클릭했을 때
같이 함께 일어나야하는 동작들을 함께 처리하는 부분을 추가하고, 이렇게 여러 컴포넌트가 동일한 이벤트를 수신해서 각각에서 필요한 처리를 할 때에도 pub/sub으로 잘 관리가 되는 지 확인해본다.