SE-Jr / tada.js

:tada: Simple Carousel Javascript Library
MIT License
6 stars 1 forks source link

pub/sub 패턴을 사용하여 리팩토링 #20

Closed sososimsim closed 6 years ago

sososimsim commented 6 years ago

개요

pub/sub 패턴을 사용해서

각각이 Controller가 발행하는 이벤트를 수신해서 동작하도록 고쳐보았습니다.

상세

pub/sub 적용에 대한 생각

hyeonmi commented 6 years ago

코드를 보면서 고민 됐던 포인트를 주절주절 해보면.. Container가 없다면 Navigator, Indicator 독립적으로 의미가 있나? 없다면 Container가 Navigator, Indicator 인스턴스를 생성하고 가지고 있는 구조가 되어야하지 않나? 하지만 지금 구조처럼 같은 따로 분리하면 재사용은 가능하겠다. 그런데 다른 곳에서 재사용이 가능한가?

그리고 (개발)사용자의 입장에서 이 라이브러리를 쓸때 필요하다고 생각되는 부분.

hyeonmi commented 6 years ago

Events Class는 우리 event라 얼핏 보면 헷갈릴수 있어서 이름 변경하면 좋을거 같아요. 코드 가독성이 좋고 객체의 응집도가 좋은것 같아요! :)

sososimsim commented 6 years ago

슬라이드 3개 중에서 3페이지로 이동한다고 하면

요런식으로 각각의 동작이 동시에 일어나는 것을 생각하고 있었는데요. 지금 다시 보니 Navigator, Indicator에서 일어나는 동작을 추가로 구현하지 않았었네요..^_ㅠ 지금 상태로는 trigger만 하고 있어서 굳이 나눌 필요가 있나...? 하는 생각이 더 들게 되는 것 같아요.

따로 분리하면서 원래 생각했던 것들은 이런 것들이었어요.

추가 컴포넌트가 붙는 식으로 확장될 일이 거의 없을 거라는 전제라면, 오히려 아예 직접적으로 인스턴스들을 가지고 관리하는 것이 나을 수도 있다는 부분은 다시 고민해봐야할 것 같아요.🤒 (재사용의 단위가 Indicator, Navigator 요 단위가 아니라 그냥 캐러셀 한덩어리 단위여야 맞나 싶기도 하고...)


사실 나 이외의 개발자가 사용할 수 있는 라이브러리를 개발해본 경험이 거의 없어서,

요것도 지금 좀 고민이 되는 것 같아요. 이건 스터디원들과도 추가로 논의해보아야겠습니다.
처음 시작할 때는 (저는) 어떤 이벤트들을 열어둘까? 는 따로 정해보지 않고, 같이

var carousel = new SP({
  selector : ".some-selector",
  navigator : "arrow",
  indicator : "dots",
  autoslide : false,
  infinite : false
});

요런식으로 생성할 때 주는 옵션들만 생각해보았거든요.