Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaAPI设计得很差吗?为什么?_Java_Api - Fatal编程技术网

JavaAPI设计得很差吗?为什么?

JavaAPI设计得很差吗?为什么?,java,api,Java,Api,我听过很多,JavaAPI的设计很糟糕。你同意吗?如果同意,如何同意?我知道日历/日期API存在重大问题。collections api需要使用大量样板代码。文件/IO API在某些方面可能比较复杂 但是,这是否适用于所有国家?对于哪些版本的Java?简而言之,Java API是可以的 更长的答案是,一些API在Java版本上进行了更改,有时是重大的更改,并且可能包含一些奇怪的部分。例如,Date有很多不推荐使用的方法。然而,重要的是这些API确实存在。Java的标准库非常强大,您可以在其中找到

我听过很多,JavaAPI的设计很糟糕。你同意吗?如果同意,如何同意?我知道日历/日期API存在重大问题。collections api需要使用大量样板代码。文件/IO API在某些方面可能比较复杂


但是,这是否适用于所有国家?对于哪些版本的Java?

简而言之,Java API是可以的

更长的答案是,一些API在Java版本上进行了更改,有时是重大的更改,并且可能包含一些奇怪的部分。例如,Date有很多不推荐使用的方法。然而,重要的是这些API确实存在。Java的标准库非常强大,您可以在其中找到几乎任何东西的API(可能并不总是完美的API,但已经足够好了)


注:下次有人发表这样的声明时,问问他一生中自己设计了多少种语言

我不会说所有的设计都很糟糕。主要的问题是向后兼容性,人们仍然希望那些早就被弃用的特性可以使用,这样10年前编写的代码就不必更改了。这使得API相当大,并且通常允许多种方法来做相同的事情,而不清楚哪种方法更好。

我在1995年开始使用Java API。任何如此古老的API都很容易受到批评

要回答为什么的问题:

  • Java引入枚举太晚了——如果API从一开始就有枚举,它会更好
  • WORA(写一次,到处运行)-或者就像有人说的“写一次,到处调试”。当你的目标是最不常见的拆卸者时,制作一个优秀的API是非常困难的。没有一个真正的Windows、Mac、Unix或Linux开发者会对Java感到满意

你可能会说它“设计得很糟糕”,因为如果他们现在必须重新设计,它的作者会以不同的方式构建它。然而,多年来,他们做出了值得称赞的努力,努力做到最好。然而,事后诸葛亮是20/20

JavaAPI与任何必须“在运行时进化”的库都有相同的问题

Java问世已经有很多年了,关于该语言和库的许多设计决策也在不断发展。然而,向后兼容的需求限制了API及其更改

关于可用性问题有很多具体的例子(我在过去几年中一直在研究它们),但同样地,没有几个API是完美的。

本书介绍了一些“Java API坏吗?”

API的某些部分,如java.util.Date,显然设计得很糟糕(除了几个方法外,所有方法在JDK1.1中都被弃用)

还有一些其他的事情,比如一些JDK1.0类上缺少接口(这是因为在创建接口时没有接口(接口是在1.0之前添加的,但在0.0之后添加的)

有些事情做得不“正确”,因为该约定是在JDK1.1之后出现的,由于JavaBeans和使用的命名约定,AWT中有许多事情发生了变化)

还有一些在语言更改之前不可能做到的事情,比如枚举和泛型

很多API都很好。其中有些很差。JDK1.0中的早期内容显然是为HotJava(一种全Java web浏览器)编写的,并不是真正为一般用户考虑的


可以肯定地说,API越旧,“越差”。新的API是根据之前的知识设计的。这也跨越了Langues——java(取决于你的观点)比C++好。C++(取决于你的观点)比C好,等等。

< P> java不是一个设计不良的API。Java是在当前最佳实践还不完全为人所知的时候开发的。许多实现都是以一种现在不受欢迎的方式完成的。从那时起,为了结合更好的技术和实践,已经做了很多工作。这就是为什么有很多不推荐使用的代码

在这本神奇的书中,有很多这样的东西。Bloch谈到了在最初的实现中所犯的一些“错误”,以及他们是如何努力修复这些错误的。如果您是一名认真的Java开发人员,还没有体验过有效的Java,我强烈推荐您使用它。(事实上,我向大家推荐,他是一位对Java有着透彻理解的优秀作家。)

JavaAPI设计得很差吗?为什么

没有

因为,虽然它不是完美的,但是坏API的数量远远少于好的部分

无论如何,你真的应该问这个问题,你直接从谁那里听到的,否则这将是在我的国家被称为“坏电话”(这是一个很棒的儿童游戏:)的东西,按摩链中的每个节点都会修改信息的微妙性,最后类似于:

我不喜欢java.util.Calendar

可能最终导致

JavaAPI完全被破坏了,设计者应该被关进监狱

当然,在中间有一个“消息转换”!!!p>
:)

就像任何存在一段时间的东西一样,它会变得陈旧。与.NET一样,Sun等人也试图保持新事物。但是,时间使一切停滞不前,特别是考虑到您不能更改接口,只能添加,因为更改会破坏一切。:-)

Java很古老(它起源于90年代初,但直到1995年左右才发布到1.0),任何旧的API都可以批评。这并不是说它们本身就不好。他们只是他们时代的产物,这种哲学现在被认为是不好的(通常有很好的理由,但并不总是如此)

要解决您提出的问题:

  • 日期很糟糕,因为它是可变的。不可变日期类会更干净(Calendar也有同样的问题)
  • 字符串上的公共构造函数充其量是有问题的。