[openstack-dev] [Solum] Some initial code copying for db/migration
Morgan Fainberg
m at metacloud.com
Tue Nov 19 01:04:11 UTC 2013
On Mon, Nov 18, 2013 at 1:58 PM, Christopher Armstrong
<chris.armstrong at rackspace.com> wrote:
> On Mon, Nov 18, 2013 at 3:00 PM, Dan Smith <dms at danplanet.com> wrote:
>>
>> Sorry for the delay in responding to this...
>>
>> > * Moved the _obj_classes registry magic out of ObjectMetaClass and
>> > into
>> > its own method for easier use. Since this is a subclass based
>> > implementation,
>> > having a separate method feels more appropriate for a
>> > factory/registry
>> > pattern.
>>
>> This is actually how I had it in my initial design because I like
>> explicit registration. We went off on this MetaClass tangent, which buys
>> us certain things, but which also makes certain things quite difficult.
>>
>> Pros for metaclass approach:
>> - Avoids having to decorate things (meh)
>> - Automatic to the point of not being able to create an object type
>> without registering it even if you wanted to
>>
>> Cons for metaclass approach:
>> - Maybe a bit too magical
>> - Can make testing hard (see where we save/restore the registry
>> between each test)
>> - I think it might make subclass implementations harder
>> - Definitely more complicated to understand
>>
>> Chris much preferred the metaclass approach, so I'm including him here.
>> He had some reasoning that won out in the original discussion, although
>> I don't really remember what that was.
>>
>
> It's almost always possible to go without metaclasses without losing much
> relevant brevity, and improving clarity. I strongly recommend against their
> use.
>
I think this is simple and to the point. ++ Metaclasses have their
places, but it really makes it hard to clearly view what is going on
in a straight forward manner. I would prefer to keep metaclass use
limited (wherever possible) with the exception of abstract base
classes (which are straightforward enough to understand). I think the
plus of "avoiding decorating things" isn't really a huge win, and
actually i think takes clarity away.
--Morgan Fainberg
More information about the OpenStack-dev
mailing list