[
https://issues.apache.org/jira/browse/CASSSIDECAR-208?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Francisco Guerrero updated CASSSIDECAR-208:
-------------------------------------------
Reviewers: Francisco Guerrero, Saranya Krishnakumar
Status: Review In Progress (was: Patch Available)
> Refactoring Guice modules
> -------------------------
>
> Key: CASSSIDECAR-208
> URL: https://issues.apache.org/jira/browse/CASSSIDECAR-208
> Project: Sidecar for Apache Cassandra
> Issue Type: Improvement
> Components: Rest API
> Reporter: Yifan Cai
> Assignee: Yifan Cai
> Priority: Major
> Fix For: 0.1
>
> Time Spent: 5h
> Remaining Estimate: 0h
>
> {color:#000000}As more engineering efforts are made into Sidecar, the current
> Guice module setup is reaching to a bottleneck, making it hard to scale,
> hurting the development experience. {color}
> {color:#000000}- Object bindings are declared in one single module,
> MainModule, which is used like a dump ground. Besides the growing files size
> (it now has 1000 lines and growing), one also cannot tell in which feature
> the bindings are needed.{color}
> {color:#000000}- Bindings take a growing large amount of dependencies. For
> example, the vertx router provider already takes 40 parameters. It is hard to
> manage. And the size of the parameter list is increasing, as new APIs are
> introduced. {color}
> {color:#000000}I would like to propose a refactoring to Guice modules,
> applying the Guice best practices
> ({color}[https://github.com/google/guice/wiki/BestPractices]{color:#000000}).
> {color}
> {color:#000000}Organize the bindings by feature to provide a good dependency
> isolation, as well as documentation.{color}
> {color:#000000}Invert the control of building object with large amount of
> dependencies, e.g. vertx router and scheduling tasks, to make it open to
> extend in the future development.{color}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]