2

たとえば、jQuery.live()は非推奨であり、代わりに.on()and を使用する必要がありmysql_*ますmysqli

フレームワークやプログラミング言語が古い関数を単に更新するのではなく、廃止するのはなぜですか? これが間違った場所にある場合は申し訳ありません。もしそうなら、どこに投稿すればよいか教えてください。

4

7 に答える 7

3

機能の設計が変更された場合、新旧両方の機能が提供される期間(移行時間)を提供し、将来のある日付で古いバージョンが削除されることを望んでいます。新しい動作に同じ名前を付けた場合、これは実行できませんでした。 .live()異なる議論を.on()取り、異なる働きをします。 より強力で、必要に応じ.on()てシミュレートすることができますが、呼び出し元のコードを変更しないと、この2つは互換性がありません。.live()

新しい動作を備えた新機能を導入すると、どの動作が文書化されているか(どの名前で記述されているか)が完全に明確になるため、文書化プロセスも簡素化されます。

また、古いコードに、古い方法をサポートしなくなった最新の最新バージョンが含まれている場合、存在し.live()ていなくても機能しない理由は、存在している場合よりもはるかに明確ですが、動作が間違っていました。

そして、のような古い振る舞い.live()は、物事を行うための悪い方法であるため(重大な非効率につながる可能性があるため)、最終的にコードから削除されます。将来のバージョンからそれを削除することは、それの使用を減少させ、最終的にはなくなる方法です。移行期間により、開発者は変更の必要性について学び、変更を実装/テストするためのかなりの時間を得ることができます。

于 2013-01-30T04:38:39.200 に答える
0

OracleのJavaドキュメントからこれをチェックしてください:

ユーザーに新しいAPIへの移行を希望する正当な理由は次のとおりです。-古いAPIは安全でない、バグがある、または非常に非効率的です-古いAPIは将来のリリースで廃止されます-古いAPIは非常に悪いコーディング慣行を奨励します

于 2013-01-30T04:43:58.220 に答える
0

すべてのフレームワークと言語を尊重します..これが非推奨が起こる理由です..

1- おっと、一体何を考えているんだ!

これが、メソッドが廃止された主な理由の 1 つだと考えたいと思います..ある時点で、だれが php/jquery を作成したか、またはコンピューターが間違いを犯したか、その間違いを修正する唯一の方法は、他の解決策を提供することです..

最良の例はmysql_図書館です

2-すべての体を新しい機能に移行させることはできません..たとえば、タイプするのが好きだとしましょう。.liveより自然に感じるので、jqueryライブラリで構築したものをすべて壊す代わりに、彼らはそれが悪いと教えてくれますその後、彼らはより良いものを作成し、最終的に古い機能を廃止します..

3-私は同じ間違いをしたくないので、もっとクールに見えるようにするために、新しい機能をテストする時間を与えます。何か問題があるかどうか教えてくれます。 1

4-そして最も重要なことは、コアの変更と新しい考え方..

それが私が考える方法です..すべてのメソッドが非推奨になっていることには、それ自身の理由があります..しかし、それに直面しましょう。

于 2013-01-30T04:47:40.067 に答える
0

mysql_queryデフォルトでは危険なインターフェイスです。それを中心に構築されたすべてのアプリケーションを壊さずに更新する方法はないため、最善の計画は廃止することです。それがなければ、世界は本当に良くなります。

フレームワークは下位互換性を促進するためにできる限りのことを行う必要がありますが、機能を削除すると、プラットフォームがより迅速に進歩したり、より一貫したりするのに役立つ場合があります。

jQuery が廃止された理由はわかりませんlive()が、そのような関数はサポートが困難であったり、API の他の要素と重要な機能が重複している場合があります。jQuery は単なるフレームワークであるだけでなく、コード サイズにも十分注意する必要があることに注意してください。コア ライブラリ内の余分なキロバイトのコードはすべて、追加のテラバイトのデータがインターネット経由でダウンロードされる原因となります。何かを追加すると、何かが行かなければなりません。

Linux カーネルが 80386 のサポートを終了したのはなぜですか? 必要のない機能を維持すると、必要な機能の労力が奪われるからです。

于 2013-01-30T04:47:42.777 に答える
0

答えは簡単です。ソフトウェアのバージョンを更新するとき。彼らがすでにコーディングしたものすべてを壊さなければならないのはなぜですか? 廃止されると、セキュリティ上の欠陥が修正されるだけでなく、使用方法も変更されます。

于 2013-01-30T04:37:56.567 に答える
0

廃止された機能とその代替品の間の同時互換性を可能にするリリース プロセスのステップが必要です (.liveおよびのように) .on)。このステップが存在せず、すぐに の機能.liveを持つように置き換えられた場合、.onの古い動作を.live次のバージョンに更新しようとすると、完全に壊れたコードに対処する必要があり、これは非常に困難です。

その他の理由は、バックエンドの 2 つの API 間に互換性がないことです。これはおそらく、 vs .よりもext/mysqlvs.に適用されます(おそらく、同様のはるかに小さなバックエンドがあります)。 両方とも非常に長い間存在しており、独立したプロジェクトとして開始され、おそらく別の人によって維持されていました(そうだと思います)。最終的に、/は とは別に開発された後、php コアに導入されました。これらのいずれのバックエンドもフロントエンドも、互換性に近いものではありません。mysqli.live.onmysqliPDOext/mysqlmysqliPDOext/mysql

.liveなぜ彼らが/を取り除くのか、具体的な理由を尋ねているとは思いませんがext/mysql(あなたは彼らが劣っていることを理解しているようです)、少なくとも PHP にはそれに関する FAQ があります: http://www.php. net/manual/en/faq.databases.php#faq.databases.mysql.deprecated

于 2013-01-30T04:51:25.987 に答える
0

多くの場合、人々がそれらを使用しないことを知っているように、また将来のある時点でそれらが存在しなくなることを知っているように、物事は廃止されます。ただし、その間、非推奨とは、古いコードを壊すことなく言語/フレームワークの開発を進めることができることを意味します。

于 2013-01-30T04:38:02.680 に答える