Transparent? No, opaque.

The word transparent is often used in descriptions of programs and their API's. Here's one example from some Java documentation:

KeyFactory The KeyFactory class is an engine class designed to provide conversions between opaque cryptographic keys (of type Key) and key specifications (transparent representations of the underlying key material).

Quite reasonable. Opaque and transparent are evocative and describe key features of the objects that are players in the API. But I often see transparent used when, IMO, opaque makes much more sense. Consider this page describing REST webservices.

The web service makes available a URL to a parts list resource. For example, a client would use this URL to get the parts list: http://www.parts-depot.com/parts Note that "how" the web service generates the parts list is completely transparent to the client. All the client knows is that if he/she submits the above URL then a document containing the list of parts is returned. Since the implementation is transparent to clients, Parts Depot is free to modify the underlying implementation of this resource without impacting clients. This is loose coupling.

The use of transparent means to me that the user would understand how the services generates the parts list. I think the word opaque fits much better. Am I missing something? When describing parts of a system that are decoupled from other parts, the details of the implementation should be opaque to other components, not transparent. Thank you.

archived on 2006-04-09 in ,

blog comments powered by Disqus