strategies for creating self-contained, resuable modules

I'm just really starting to use the modules. Due to clumsiness of named
libraries I am creating a project library for each module, eg:

foo-module
foo-library
bar-module
bar-library

Whenever I set a dependency on the module I also include the library.
This way I don't have to "know" the libraries I need to use the services
exported by that module.

I suppose I could create two libraries per module, only one being for
clients of the module eg:

foo-module
foo-library-api
foo-library-impl

Of course what I /really/ want is for idea to simply support a fully self contained module and do away (or at least make no necessary) the libraries. I know this has been ranted on quite a bit. What I have not seen any body do is praise the named library scheme. ]]>

---

Does anybody with more experience setting a large number modules for a
large system have any other insights?

Please sign in to leave a comment.