私はJavaScriptが初めてです。私は言語の概念の多くを理解しており、プロトタイプの継承モデルを読み進めてきました。また、ますますインタラクティブなフロントエンドのもので口笛を吹いています。これは興味深い言語ですが、多くの重要な対話モデルに典型的なコールバック スパゲッティに、私はいつも少しうんざりしています。
私にはいつも奇妙に思えますが、これは JavaScript のネストされたコールバックの入れ子であり、可読性の悪夢であるにもかかわらず、多くの例やチュートリアルでめったに見られないことの 1 つは、定義済みの名前付き関数をコールバック引数として使用していることです。私は日々 Java プログラマーであり、コード単位の Enterprise-y 名に関するステレオタイプのジャブを破棄します。機能豊富な IDE の強力な選択を備えた言語で作業することについて私が楽しむようになったものの 1 つは、意味のある、名前が長い場合、実際の生産性を低下させることなく、コードの意図と意味をより明確にすることができます。では、JavaScript コードを記述するときに同じアプローチを使用してみませんか?
考えてみると、このアイデアに賛成でも反対でもある議論を思いつくことができますが、私の素朴さと言語への新しさにより、なぜこれが技術的なレベルで良いのかについての結論に達することができません.
長所:
- 柔軟性。コールバック パラメーターを持つ非同期関数は、多くの異なるコード パスの 1 つによって到達される可能性があり、考えられるすべてのエッジ ケースを説明するために名前付き関数を記述するのが面倒になる可能性があります。
- スピード。それはハッカーの考え方に大きく影響します。動作するまでボルトで固定します。
- 他はみんなやってる
- たとえ些細なことであっても、ファイルサイズは小さくなりますが、すべてのビットが Web でカウントされます。
- より単純な AST? 匿名関数は実行時に生成されるため、JIT は名前を命令にマッピングすることはありませんが、この時点では推測しているだけです。
- 発送が早い?これについてもよくわかりません。もう一度推測します。
短所:
- むずかしくて読めない
- コールバックの沼地の奥深くに入れ子になっていると、混乱が増します (公平を期すために、最初から不十分に構築されたコードを書いている可能性がありますが、これは非常に一般的なことです)。
- 機能的なバックグラウンドのない人にとって、理解するのは奇妙な概念になる可能性があります
非常に多くの最近のブラウザーが JavaScript コードを以前よりもはるかに高速に実行できることを示しているため、匿名コールバックを使用して得られる些細なパフォーマンスの向上がどのように必要になるかを理解できていません。名前付き関数を使用できる状況 (予測可能な動作と実行パス) にある場合は、そうしない理由はないようです。
それで、私が気付いていない技術的な理由や落とし穴があり、それが理由でこの慣習が非常に一般的になっていますか?