[Zope-dev] RFC: Python/Zope Interfaces
Ken Manheimer
klm@digicool.com
Wed, 29 Nov 2000 10:44:32 -0500 (EST)
On Tue, 28 Nov 2000, Dieter Maurer wrote:
> Michel Pelletier writes:
> > Dieter Maurer wrote:
> > > Michel Pelletier writes:
> > > > Also, defining the interface seperately keep the two things apart,
> > > > impementation and interface, and doesn't allow you to sneak in a new
> > > > method unless you also sneak it into the interface, thus making a
> > > > stronger "contract" with the user.
> > > I am a bit astonished by this statement:
> > > ....
> > ....
> > I'm not sure if you are making these statement because you
> > disagree with the current proposal or because you disagree with what I
> > said above.
> I disagree with the "separating implementation and interface
> makes for a stronger contract".
The separation need not mean that the specification is hard to access from
the implementations, either for documentation or for runtime enforcement.
However, it *does* run contrary to the literate programming notion of
weaving together the description of software with the code. When you have
multiple implementations that satisfy an interface, having a copy of the
interface spec with each implementation can lead to the drift described
above. If you *want* discrete interface definitions with integrity across
implementations, you have to avoid this multiple, potentially conflicting
copies of the specification.
The principle is that an interface should be a discrete entity in its own
right, not subject to dis-integration for the sake of different
implementations. Tieing an interface specification to the implementations
can mean that separate *copies* of the specification drift.
I think you're asking for something internally contradictory, and not
seeing that - but, as i said in my first comment in this thread, i'm not
expert, and may be misinterpreting what you're asking.
> Separation by itself does not make the contract stronger.
If it preserves integrity, it does.
Ken
klm@digicool.com