例如,jQuery的.live()
已被弃用,而我们必须使用.on()
而对于MySQL,mysql_*
很快就会被弃用并转移到其他地方...更多值得注意的是...... mysqli
。
为什么框架和编程语言会弃用旧函数而不仅仅是更新它们?对不起,如果这是在错误的地方。如果是,请告诉我应该在哪里发帖。
答案 0 :(得分:3)
当功能的设计发生变化时,他们希望提供一段时间来提供旧功能和新功能(转换时间),然后在将来某个日期,旧版本将被删除。如果它们为新行为保留相同的名称,则无法执行此操作。 .live()
和.on()
采用不同的论点,并以不同的方式工作。 .on()
功能更强大,如果需要可以模拟.live()
,但如果不更改调用代码则两者不兼容。
使用新行为引入新功能还简化了文档过程,因为它完全清楚记录了哪些行为(通过它所写的名称)。
并且,当旧代码包含不再支持旧方式的最新版本时,更清楚的是,当.live()
不存在时,事情不起作用,而不是存在时,但是行为不对。
而且,.live()
这样的旧行为最终会从代码中删除,因为它们是一种糟糕的做事方式(可能导致效率显着低下),因此jQuery希望每个人最终都停止使用它们。从未来的版本中删除它是一种强制它的使用下降并最终消失的方法。过渡期为开发人员提供了大量时间来了解变更和实施/测试变更的必要性。
答案 1 :(得分:0)
答案很简单。当一个人更新他们的软件版本。为什么他们已编码的所有内容都会破坏?当事情被弃用时,它们不仅可以修复安全漏洞,还可以改变应该使用的方式。
答案 2 :(得分:0)
通常会弃用某些东西,以便人们知道不要使用它们,以便他们知道在将来的某个时刻它们将不复存在。然而,与此同时,弃用意味着他们可以在不破坏旧代码的情况下继续进行语言/框架开发。
答案 3 :(得分:0)
从Oracle的Java documentation:
中查看此信息希望用户迁移到新API的有效理由包括: - 旧API不安全,错误或效率低 - 旧API在将来的版本中消失 - 旧的API鼓励非常糟糕的编码实践< / p>
答案 4 :(得分:0)
所有人都尊重所有框架和语言.. 这就是为什么弃用发生的原因..
1-哎呀,我到底在想什么!
我很想考虑这个方法被弃用的主要原因之一。 在某些时候曾经制作过php / jquery或者计算机出错了,解决这个错误的唯一方法就是提供其他解决方案..
最好的例子是mysql_
库
2-你不能让每个人都进入你的新功能..
让我们说例如我喜欢键入.live
因为它感觉更自然,所以不是打破我用jquery库构建的所有内容,他们会告诉我它很糟糕然后他们创造了更好的东西,最后他们将弃用旧功能..
3-我不想犯同样的错误,所以只是为了看起来更酷,我会给ppl时间测试新功能,他们会告诉我是否有任何错误..我不想修复一个与其他人的错误
4-最重要的是核心变化和新思维。这就是我思考它的方式..确定每种方法都被弃用有其自身的原因..但让我们面对它,他们知道他们做得比我们做得更好。
答案 5 :(得分:0)
mysql_query
是默认情况下危险的界面。如果不打破围绕它构建的每个应用程序,就无法更新它,因此最好的计划是退出它。没有它,世界真的会变得更好。
虽然框架应该尽一切可能促进向后兼容性,但有时候丢弃功能会帮助平台更快地前进或变得更加一致。
我不确定为什么jQuery会丢弃live()
,但有时候这样的功能很难支持,或者与API的其他元素有明显的功能重叠。请记住,jQuery不仅是一个框架,而且还需要非常小心代码大小。核心库中每增加一千字节的代码就会导致额外的 TB级数据通过互联网下载。当你添加东西时,必须要做的事情。
为什么Linux内核drop support for the 80386?这是因为维护您不想要的功能会消耗您想要的功能。
答案 6 :(得分:0)
在发布过程中必须有一个步骤,允许同意兼容已弃用的功能及其替换(如.live
和.on)
。如果此步骤不存在且{{ 1}}被替换为立即具有.live
的功能,任何依赖于.on
的旧行为且想要更新到下一版本的人都必须处理完全破坏的代码,这将是更难。
其他原因是后端的两个API之间缺乏兼容性。对于.live
与ext/mysql
相比,这可能适用于mysqli
与.live
对比.on
(可能具有相似且更小的后端)。 mysqli
和PDO
已经存在了很长时间,并且作为独立于ext/mysql
的项目开始,可能由不同的人维护(我假设如此)。最终,mysqli
/ PDO
在与ext/mysql
分开开发后被引入到php核心中。这些中的任何一个的背部和前端都不接近兼容。
我认为你没有具体说明为什么他们要摆脱.live
/ ext/mysql
(你似乎明白他们是低等的),但至少PHP有关于它的常见问题解答:http://www.php.net/manual/en/faq.databases.php#faq.databases.mysql.deprecated