[Zope-dev] RFC: Python/Zope Interfaces - More ZCatalog ;-)
Chris Withers
chrisw@nipltd.com
Wed, 29 Nov 2000 14:31:59 +0000
Jim Fulton wrote:
> > It is a very good thing to have the specification very near
> > to the implementation -- as a permanent guide to the
> > implementor.
>
> Firtunately, modern displays allow multiple side-by-side
> windows. ;)
G400, two displays :-)
> > It is even better, when big parts of the
> > specification becomes part of the executable code
> > (as is the case for Eiffel's pre- and post-conditions).
:-((
I'd much prefer smaller lightweight interfaces with as little 'code' in
them as possible...
> > Or, to say it differently, it is more essential
> > the a system's documentation describes faithfully what is
> > rather than what should be (but is not).
>
> I disagree alot. I'd rather have clear documentation of intended
> behavior, rather than have the documentation change based on
> implementation decisions.
Yeah! ZSearch (thanks Michel, I did know about it but didn't express my
point very well ;-) seems like a good example of this to me. The
_interface_ deosn't seem to exist, just several implementations and no
actual documentation. I wonder if the implementations all have the same
functionality? They would if the interface was a contract...
> Please note that these points were argued extensively on the Python
> types-sig a couple of years ago.
What was the outcome?
Michel wrote:
> > However, until Catalog has a defined _interface_, I'm not even going to
> > think about starting :-S
> >
> > Anyone know when that's likely to happen?
>
> A couple of years ago. (hehe - sorry, had to).
Well, sorry to correct you, but there isn't an _interface_, or at least
one that's published.
> The Z Search Interface
> is well defined (not well documented)
ie: there isn't an interface, there's just similar (I bet they're not
identical) implementations in ZSearch, Catalog, ZSQL and ZNetwork
(whatever that is ;-)
> The 'Z Search Inteface' object is one tool in particular
> that uses it, perhaps you can in imply the interface from that since it
> is not documented.
As I said earlier, I totally agree with Jim that a weak interface like
this isn't a lot of use. What happens next time someone tweaks the
catalog and changes the functionality? Does that mean the interface has
changed? How can all the seperate implementations keep up?
I actually tried to make Squishdot implement the Z Search Interface when
I moved to using the catalog, but it appeared at the time that ZCatalog
didn't actually work properly with Z Search anyway. All of which kindof
illustrates my point :-S
The main thing for me is that the implementation is documented
somewhere, which it isn't. Of course, it'd be much better if it was a
proper interface as is being discussed here. Mindyou, it'd also be great
if python had native interface support. What does Guido think about
that?
cheers,
Chris :-)