goweb
goweb copied to clipboard
Simplified API in the future? Goweb use too many []interface{} for args
I'm going to use Goweb for the next project, after reading the API document I feel Goweb use too many ...interface{} for the function agrs. I give some flexible but sometime give some confusions. Why don't we just provide the most general API for the function? For example, goweb.Map should be:
func Map(fn func(c context.Context) error, path string, methods []string, matchers []handlers.MatcherFunc) (handlers.Handler, error)
or goweb.MapController should be just:
func MapController(controller interface{}, path string) error
I know this is not that importan and hard to change because you will break your old code but it still worth something! I bet that many of us love Go because the simplicity and clarity (by the lack of function overloading and something else)
Thanks for the team for your great package!
Thanks for that feedback. Some good points.
Mat
Sent from my iPhone
On 22 Nov 2013, at 20:20, nvcnvn [email protected] wrote:
I'm going to use Goweb for the next project, after reading the API document I feel Goweb use too many ...interface{} for the function agrs. I give some flexible but sometime give some confusions. Why don't we just provide the most general API for the function? For example, goweb.Map should be:
func Map(fn func(c context.Context) error, path string, methods []string, matchers []handlers.MatcherFunc) (handlers.Handler, error) or goweb.MapController should be just:
func MapController(controller interface{}, path string) error I know this is not that importan and hard to change because you will break your old code but it still worth something! I bet that many of us love Go because the simplicity and clarity (by the lack of function overloading and something else)
Thanks for the team because you provide a great package!
— Reply to this email directly or view it on GitHub.
You can tell we came from Ruby and JavaScript and not C++ can't you :D
Do you think adding strict versions would be a pointless thing?
I.e.
goweb.Map(args ...interface{}) (handlers.Handler, error)
AND goweb.MapS(fn func(c context.Context) error, path string, methods []string, matchers []handlers.MatcherFunc) (handlers.Handler, error)
The Map
function would just figure out how to call MapS
but hard-corers would be able to just use the MapS
function directly?
I think a strict version should be good for the near future. But in the far future, remove all the switch case block for determine the type should cleaner and shorten some of your code, do you think so?
P/s: If there is a strict version, you should use it in your examples/tutorials (person like me will look at them first :D)