util.is*()
機能を廃止する決定は、2015年4月にNode.js技術運営委員会(TSC)で最初に行われました。その時点ではまだio.jsでしたが、現在は同じ委員会になっていますNode.js TSCと彼らが話していたコードベースは、Node.js 4.0.0となったものです。
minutes from the meetingはオンラインです。だからあなたはそれを読むことができ、秤量された賛否両論を見ることができます。それらの数分で問題の明確な声明バートBelderからかもしれません:
私たちはこれらを廃止したい理由はそれは後方互換性がないことになるので、我々は本当にそれを修正したくないということですので、これは実際にありますコアになるには大きすぎます。
(残念ながら、分の文脈が不足しているようですが、私は他のソースからいくつかの文脈を掘り下げて参考にすることができます。)
UPDATE:推論は、このようなものであるようないくつかのTSC minutes from Februaryとdiscussion in a pull request from the same monthから判断すると、それはそう:
ねえ、util.isObject()
返す関数についてfalse
のように見えます。それは正しくありません。関数はオブジェクトです。それはtrue
を返す必要があります。しかし、その変更を加えることで、Nodeエコシステムの大きな部分が破損する可能性があります。その動作に依存しているかもしれないnpmのすべてのモジュールを考えてみてください。驚くべきことに生態系を破壊する危険を避けるために、何とか大量のコードを見直さなければなりません。そして、急激な変化は完全に後方互換性のないものになります。すべては、実際にコアに属していなくても、ユーザーランドモジュールによって簡単に提供される便利な機能のためのものです。 (core-util-isなどを参照してください)util.isObject()
を修正するだけで、ブレークチェンジとセブン・バンプを導入するのではなく、最初に実行していたはずのことをコアにしてはいけません。
util.is*()
の機能には、他のコーナーケースが潜んでいる可能性がありました。
プロジェクトの哲学は、一般的に最小のコアを持つことです。すべてのことが等しい、何かがユーザランドモジュールによってあまり問題なく提供されることができれば、それはコアではなくユーザランドモジュールに居なければなりません。
これは私がテキストの一部から多くの推論を引き出すことですが、そのことは多かれ少なかれ廃止予定だと思います。
[changelog](https://github.com/nodejs/node/blob/v4.0.0/CHANGELOG.md#20140501-version-01113-unstable)が表示された場合は、 'util:made util.isArray a direct alias Array.isArray(Evan Carroll)のための '。ノードはJS関数を直接呼び出していたので、エイリアスを保持する必要はありません。直接ネイティブ関数を呼び出してください。 – Tushar