2

例如,jQuery 已.live()被弃用,而我们必须使用.on()and 对于 MySQL,mysql_*很快将被弃用并转向其他东西......更值得注意的是mysqli......。

为什么框架和编程语言会弃用旧功能而不仅仅是更新它们?对不起,如果这是在错误的地方。如果是,请告诉我应该在哪里发帖。

4

7 回答 7

3

当功能的设计发生变化时,他们希望提供一段同时提供新旧功能的时间段(过渡时间),然后在将来的某个日期删除旧版本。如果他们为新行为保留相同的名称,则无法做到这一点。 .live().on()采取不同的论点并以不同的方式工作。 .on()功能更强大,可以根据需要进行模拟.live(),但是如果不更改调用代码,两者是不兼容的。

引入具有新行为的新特性也简化了文档过程,因为它完全清楚记录了哪些行为(它所写的是哪个名称)。

而且,当旧代码包含不再支持旧的做事方式的最新版本时,为什么事情在不存在时不起作用.live()比在存在但有错误行为时更清楚。

而且,像这样的旧行为.live()最终会从代​​码中删除,因为它们是一种糟糕的做事方式(可能导致效率显着降低),因此 jQuery 希望每个人最终都停止使用它们。从未来的版本中删除它是一种迫使它的使用下降并最终消失的方式。过渡期为开发人员提供了大量时间来了解更改的必要性并实施/测试更改。

于 2013-01-30T04:38:39.200 回答
0

答案很简单。当一个人更新他们的软件版本时。为什么他们已经编码的所有内容都要中断?当事物被弃用时,它们不仅会修复安全漏洞,还会改变它的使用方式。

于 2013-01-30T04:37:56.567 回答
0

通常不推荐使用某些东西,以便人们知道不使用它们,并且知道在将来的某个时候它们将不再存在。然而,与此同时,弃用意味着他们可以在不破坏旧代码的情况下继续进行语言/框架开发。

于 2013-01-30T04:38:02.680 回答
0

从 Oracle 的Java 文档中查看:

希望用户迁移到新 API 的正当理由包括: - 旧 API 不安全、有缺陷或效率极低 - 旧 API 将在未来版本中消失 - 旧 API 鼓励非常糟糕的编码实践

于 2013-01-30T04:43:58.220 回答
0

所有人都尊重所有框架和语言..这就是弃用发生的原因..

1-哎呀,我到底在想什么!

我很想考虑这是不推荐使用方法的主要原因之一..在某些时候曾经犯过php / jquery或计算机犯了错误,而解决该错误的唯一方法是提供其他解决方案..

最好的例子是mysql_图书馆

2-你不能让每个人都进入你的新功能..比如说我喜欢打字,.live因为它感觉更自然,所以不要仅仅破坏我用 jquery 库构建的所有东西,他们会告诉我这很糟糕并且然后他们创造了更好的东西,最后他们将弃用旧功能..

3-我不想犯同样的错误,所以为了看起来更酷,我会给大家时间来测试新功能,如果有什么问题他们会告诉我..因为我不想和其他人一起修复错误一

4-也是最重要的核心变化和新思维..

这就是我的想法.. 肯定每一种方法都被弃用有它自己的原因.. 但让我们面对现实吧,他们知道他们比我们做得更好。

于 2013-01-30T04:47:40.067 回答
0

mysql_query是一个默认危险的接口。如果不破坏围绕它构建的所有应用程序,就无法更新它,因此最好的计划是停用它。没有它,世界真的会更好。

尽管框架应该尽其所能促进向后兼容性,但在某些情况下,删除功能有助于平台更快地推进或变得更加一致。

我不确定为什么 jQuery 会放弃live(),但有时像这样的功能很难支持,或者与 API 的其他元素有显着的功能重叠。请记住,jQuery 不仅是一个框架,而且在代码大小方面也需要非常小心。核心库中每增加一千字节的代码,就会导致通过互联网下载额外的TB数据。当你添加东西时,有些东西必须去。

为什么 Linux 内核放弃了对 80386 的支持?这是因为维护您不想要的功能会减少您想要的功能的工作量。

于 2013-01-30T04:47:42.777 回答
0

在发布过程中必须有一个步骤允许在已弃用的功能与其替换之间同时兼容(如.live.on)。如果此步骤不存在并且.live被替换为.on立即具有 的功能,任何依赖旧的行为.live并想要更新到下一个版本将不得不处理完全损坏的代码,这将更加困难。

其他原因是后端的两个 API 之间缺乏兼容性。这可能适用于ext/mysqlvs.mysqli比它更适用于.livevs. .on(可能具有相似且小得多的后端)。 mysqli并且PDO都已经存在了很长时间,并且都是作为独立于不同人的项目开始的,ext/mysql并且可能由不同的人维护(我假设是这样)。最终,mysqli/PDO在与ext/mysql. 这两者的后端和前端都几乎不兼容。

我不认为你问他们为什么要摆脱.live/的具体原因ext/mysql(你似乎明白他们是劣等的),但至少 PHP 有一个关于它的常见问题解答:http://www.php。 net/manual/en/faq.databases.php#faq.databases.mysql.deprecated

于 2013-01-30T04:51:25.987 回答