4 ms·
Agreed, but only if & when the abstractions are not "leaky". Robust encapsulation is simply not possible when abstractions are leaky or ill-fitting for the doma
by ssivark 6y ago
Agreed, but only if & when the abstractions are not "leaky". Robust encapsulation is simply not possible when abstractions are leaky or ill-fitting for the domain -- including an incomplete model of the domain. The latter point -- needing a complete & consistent model of the domain -- is IMHO commonly under-appreciated; a lot of software is based on poorly understood partial abstractions for their respective domains.
Bits of information leaking through faulty abstractions are exactly what make conduits for "side-channel" attacks.
- specialist 6y agoAgreed. Leaky abstractions means you have the wrong mental model. Abstractions (attempt to) hide complexity. Worst cases are black boxes. Mental models attempt to clarify how something works, to make it easier to reason how a thing works.
- davidjnelson 6y agoTotally. A robust domain model is one of the main things that matters in terms of software architecture in my experience.
- cryptica 6y agoYes true. You also want the data which is passed between the different layers to be as simple as possible to avoid leakiness. I try to avoid accepting complex instances as function arguments and try to avoid returning complex instances that will allow the user to manipulate shared state. It takes a lot of effort and thinking to figure out an abstraction which fulfils all of its requirements while at the same time exposes a simple communication interface.