I ran into a similar type of issue recently. I discussed very briefly with John M. and William, and I think a good thing to do would be to hide the generic RegisterResource method, and only expose methods which take the interface types. This would convert these types of issues from runtime to compile-time bugs.
- Katherine On Thu, Mar 19, 2015 at 10:48 AM, Nate Finch <[email protected]> wrote: > Wayne and I (and Horacio for some of the time) wasted a few days trying to > figure out a problem with the watcher we'd created. Turns out, the problem > was a missing 's': > https://github.com/natefinch/juju/commit/12ad8d64f26aca5541bbd0f0c10cd8b45bcbcc75 > > Thanks to Dimiter and John Weldon for catching it last night. > > The reason the code still compiled is because all the facade caller (rpc) > stuff uses empty interfaces and reflection to do > serialization/deserialization. This is, at some level, unavoidable. > However, it's sort of our own fault, too, for naming two things so > similarly in code that we *know* is not type safe. > > Please try to avoid making two types with very similar names if they're > commonly used for serialization, especially if they're long names that only > differ at the end. It makes it way too easy for a typo to slip in and > cause hard to find bugs. > > -Nate > > -- > Juju-dev mailing list > [email protected] > Modify settings or unsubscribe at: > https://lists.ubuntu.com/mailman/listinfo/juju-dev > >
-- Juju-dev mailing list [email protected] Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/juju-dev
