漏洞抽象法则的例外

Yon*_*oit 1 java abstraction

我和一位友好的编码员发生了争执,他被Joel的Leaky Abstractions法则轻度损坏了.要说服他使用任何新的框架/工具箱是非常困难的.我试图提出一个观点,"抽象是好的,只要它们允许低级访问抽象级别".

例子:

  • GWT - 谷歌精湛的Java-to-Javascript编译器,具有JSNI - 能够编写"本机"Javascript,如果你真的想.
  • Hibernate - AFAIK有SQLQuery - 编写本机SQL的方法.
  • Java - JNI - 如果你想念C.

听起来不错吗?我错过了什么吗?

谢谢

Jac*_*eow 7

我从阅读泄漏的抽象文章中得到的并不是抽象是坏的,而是你应该明白在幕后发生了什么,以便你可以解释"意外"的行为,并避免它们.

你朋友的节目是什么?机器语言?:)


Mar*_*Pim 5

乔尔的观点(据我理解)是,通过抽象复杂性,你会牺牲对底层复杂性的更好控制。对于除了微不足道的情况之外的任何事情,您最终都需要访问更精细的控制粒度,此时抽象就会崩溃。

因此,根据定义,所有抽象(几乎)都是泄漏的:

  • 如果系统中存在复杂性,那么它的存在一定是有原因的(或者您应该找到一种方法来消除它),因此偶尔会有用/至关重要。
  • 通过抽象,您限制了对底层复杂性的控制。
  • 当这些“偶尔出现”时,你将不得不打破抽象。