rob05c commented on issue #3296: Change TO cdns/dnsseckeys to abstract 
versioning
URL: https://github.com/apache/trafficcontrol/pull/3296#issuecomment-460417177
 
 
   Hm. This prevents new fields from ever being null, and not omitted. If a new 
field is null, it will be omitted from the JSON object returned (because this 
scheme requires all new fields to be `omitempty`). We can define new fields to 
behave that way, so it's ok from a versioning standpoint. But are we ok with 
that limitation? Are you sure we won't ever encounter a scenario in the future, 
where we need to return `"newField": null`?
   
   I'm also not a fan of the `func(interface{}) interface{}`. Empty interfaces 
throw away all type safety. At the least, this would really need to be 
`func(interface{}) (interface{}, error)` to avoid panicing. But even then, it's 
a runtime error, instead of a compile error like it currently is. Sometimes 
`interface{}` is inevitable, but it'd be really nice to keep these kind of 
errors at compile time, if we can.
   
   It'd also be ideal if we could avoid Reflection, which is inevitable with 
struct tags. I'm less worried about the performance, than the readability. If 
someone who didn't write it comes along in the future, how difficult will it be 
to climb the learning curve, for the reflecting code that's parsing the struct 
tags? 
   
   I'm not outright opposed. But these are the limitations I'm seeing, which 
would be really nice if we could figure out how to avoid.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to