User Tools

Site Tools


principles:law_of_leaky_abstractions

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
principles:law_of_leaky_abstractions [2013-08-04 14:05] – +acronym: LLA christianprinciples:law_of_leaky_abstractions [2013-08-12 16:24] – strategies, rationale christian
Line 22: Line 22:
  
 ===== Rationale ===== ===== Rationale =====
 +Abstractions are typically not perfect. Especially performance aspects are very hard to abstract away from. So there are cases when using the abstraction properly is not possible without knowing the basics underneath the abstraction. So developing and even more fixing defects in a system with leaky abstractions makes it necessary to know about all the details the abstraction is supposed to protect the developers from. Often abstractions reduce the effort to develop a feature while they increase the effort for fixing bugs. The benefits of an abstraction are only reached at the cost of some liabilities so an abstraction is only good when the liabilities are small enough compared to the benefits.
  
 ===== Strategies ===== ===== Strategies =====
Line 29: Line 29:
   * //Find a better abstraction.// There might be a better abstraction which is less leaky.   * //Find a better abstraction.// There might be a better abstraction which is less leaky.
   * //Remove the abstraction.// If the abstraction is so leaky that the leakiness creates more problems than the abstraction solves, it is better not to have it.   * //Remove the abstraction.// If the abstraction is so leaky that the leakiness creates more problems than the abstraction solves, it is better not to have it.
 +    * Especially refrain from stacking Frameworks on top each other (e.g. Spring in an EJB Container, etc.)
  
  
principles/law_of_leaky_abstractions.txt · Last modified: 2021-10-18 21:51 by christian