【发布时间】:2009-01-26 11:39:35
【问题描述】:
我与一位友好的程序员发生了争执,他被 Joel 的 Law of Leaky Abstractions 轻微损坏了。很难说服他使用任何新的框架/工具箱。我试图提出一个观点,即“抽象是可以的,只要它们允许对抽象级别的低级访问”。
例子:
- GWT - Google 出色的 Java 到 Javascript 编译器,具有 JSNI - 如果您真的愿意,可以编写“本机”Javascript。
- 休眠 - AFAIK 有 SQLQuery - 编写本机 SQL 的方法。
- Java - JNI - 如果你错过了 C。
好听吗? 我错过了什么吗?
谢谢
【问题讨论】:
-
那么,您的问题到底是什么?如果这个人因为没有完美的摘要而不会使用任何框架或工具箱,那么这个人的思维就有一些根本性的问题。
-
我试图验证我的论点,而不是仅仅依靠我自己的观点。
-
这很奇怪。我记得几年前读过那篇文章,我从没想过 Joel 是在谴责抽象,只是说抽象并不总是像“优雅”程序员所认为的那样整洁。在设计抽象时,重要的是要考虑实现如何泄漏;但是抽象仍然是必不可少的……编写一个非平凡的应用程序是一项艰巨的任务,以至于理解一个庞大的系统是不可能的,除非你可以使用抽象来“屏蔽”其他部分,而你只专注于一个部分。跨度>
标签: java abstraction