関数構成:保守可能なコードの構成要素
javaScript関数の組み合わせ:より保守可能なコードを構築します
javaScript関数構成は、複数の単純な関数を、特定のデータのサブ機能操作を論理順序で実行する単一のより複雑な関数に組み合わせる手法です。関数が適用される順序は、異なる結果を生成します。
保守可能なコードを記述するには、次の関数が正しく処理できるように、各組み合わせ関数の返品タイプを理解することが重要です。 JavaScriptは、組み合わせが不適切なタイプの機能を返すことを妨げないため、責任のこの部分はプログラマーにあります。
機能的なプログラミングパラダイムに精通していない人の場合、関数を組み合わせると、コードが複雑に見えるようになります。ただし、ES2015構文の出現により、矢印関数を使用して、特別な組み合わせ方法を必要とせずに1つのコードで簡単な組み合わせ関数を作成することができます。
組み合わせ関数は純粋な関数である必要があります。つまり、特定の値が関数に渡されるたびに、関数は同じ結果を返す必要があり、関数は独自の外部値を変更する副作用を持たないようにします。これにより、よりクリーンで読みやすいコードが生成されます。
この記事は、ジェフ・モット、ダン・プリンス、セバスチャン・セイツによってレビューされました。 SitePointコンテンツを最高の状態にしてくれたすべてのSitePointピアレビューアに感謝します!
機能的思考の利点の1つは、小さくて理解しやすい単一関数を使用して複雑な関数を構築する能力です。 しかし、これは、最もエレガントなソリューションを作成する方法を把握するために、肯定的ではなく、逆に問題について考える必要がある場合があります。この記事では、JavaScriptの関数の組み合わせをチェックするための段階的なアプローチを取り、理解しやすく、エラーが少ないコードをどのように生成するかを示します。
ネストされた関数
構成は、2つ以上の単純な関数をより複雑な関数に組み合わせることができる手法であり、論理的な順序で合格したデータの各サブ機能を実行します。この結果を取得するには、ある関数を別の関数にネストし、結果が生成されるまで内部関数の結果で外部関数の操作を繰り返す必要があります。結果は、関数が適用される順序によって異なる場合があります。これは、JavaScriptですでに知っているプログラミング技術を使用して、関数呼び出しを別の関数にパラメーターとして渡すことで簡単に実証できます。
function addOne(x) { return x + 1; } function timesTwo(x) { return x * 2; } console.log(addOne(timesTwo(3))); //7 console.log(timesTwo(addOne(3))); //8
命令的な組み合わせ
同じ一連の操作を繰り返したい場合は、1つ目と2番目の関数を自動的に適用する新しい関数を定義するのが便利な場合があります。これは次のようになるかもしれません:
function addOne(x) { return x + 1; } function timesTwo(x) { return x * 2; } console.log(addOne(timesTwo(3))); //7 console.log(timesTwo(addOne(3))); //8
この場合、2つの関数を特定の順序で手動で結合します。最初に渡された値をホルダー変数に割り当てる新しい関数を作成し、次に最初の関数を実行して2番目の関数を実行してその変数の値を更新し、最後にその所有者の値を返します。 (ホルダーと呼ばれる変数を使用して一時的に渡された値を保持していることに注意してください。このような単純な関数については、余分なローカル変数が冗長に見えますが、命令的なJavaScriptであっても、関数の引数はまた渡されます。定数を局所的に変更することが可能ですが、これにより、関数の異なる段階でパラメーター値が何であるかについて混乱が生じます。)同様に、別の新しい関数を作成する場合それどころか、これら2つの小さな機能を適用する順序は、次のことを行うことができます。
// ...来自上面的先前函数定义 function addOneTimesTwo(x) { var holder = x; holder = addOne(holder); holder = timesTwo(holder); return holder; } console.log(addOneTimesTwo(3)); //8 console.log(addOneTimesTwo(4)); //10
機能的な組み合わせを作成
既存の機能を採用し、必要な順序でそれらを結合する組み合わせ関数を作成しましょう。毎回内部の詳細に対処することなく、これを一貫した方法で行うには、関数をパラメーターとして渡す順序を決定する必要があります。 2つのオプションがあります。パラメーターはそれぞれ関数であり、左から右または右から左に実行できます。つまり、提案した新しい関数を使用して、compose(timestwo、addone)がtimestwo(addone())を表してパラメーターを左から左に読み取ることができます。パラメーターを左から右に実行する利点は、英語で同じ方法で読み取られることです。これは、加算前に乗算が行われることを暗示する機能を組み合わせた機能と命名する方法と非常によく似ています。私たちは皆、簡潔で読みやすいコードのための論理的な命名の重要性を知っています。パラメーターを左から右に実行することの欠点は、操作する値を前に配置する必要があることです。ただし、値を前に置くと、結果の関数を将来他の機能と組み合わせるのが便利ではありません。このロジックの背後にある考えをよく説明するために、ブライアン・ロンズドルフの古典的なビデオHey Underscoreを超えて行くことはできません。あなたはそれを間違っています。 (Underscoreには、BrianがLodash-FPやRamdaなどの機能的なプログラミングライブラリでUnderscoreを使用する際に議論する機能的プログラミングの問題を解決するのに役立つFPオプションがあることに注意する必要がありますが、とにかく、私たちはあなたが望んでいることを本当に望んでいます。 DOは、最初にすべての構成データに合格し、最終的に操作する値を渡します。したがって、組み合わせた関数をパラメーターの読み取りと右から左に適用することとして定義することが最も論理的です。したがって、このように見える基本的な組み合わせ関数を作成できます:
function addOne(x) { return x + 1; } function timesTwo(x) { return x * 2; } console.log(addOne(timesTwo(3))); //7 console.log(timesTwo(addOne(3))); //8
この非常に単純な組み合わせ関数を使用して、2つの以前の複雑な関数をより簡単に構築し、同じ結果を確認できます。
// ...来自上面的先前函数定义 function addOneTimesTwo(x) { var holder = x; holder = addOne(holder); holder = timesTwo(holder); return holder; } console.log(addOneTimesTwo(3)); //8 console.log(addOneTimesTwo(4)); //10
タイプはあなたの責任です
次の関数が正しく処理できるように、各組み合わせ関数のリターンタイプを知ることはプログラマの責任であることを覚えておくことが重要です。厳格なタイプチェックを実行する純粋な機能プログラミング言語とは異なり、JavaScriptは、不適切なタイプの値を返す機能を結合しようとすることを妨げません。合格数値に限定されませんが、同じ変数タイプをある関数から次の型に維持することさえしません。ただし、組み合わせている関数が、以前の関数によって返される値を処理する準備ができていることを確認する責任があります。
視聴者を検討してください
他の人は将来コードを使用または変更する必要があることを常に覚えておいてください。従来のJavaScriptコードで組み合わせを使用することは、機能的なプログラミングパラダイムに精通していない人にとっては複雑になる可能性があります。目標は、コードを読み取り、維持しやすく、よりシンプルになり、維持することです。ただし、ES2015構文の出現により、特別な組み合わせ方法を必要とせずに矢印関数を使用して単一ラインコールとして単純な組み合わせ関数を作成することも可能です。
function addOne(x) { return x + 1; } function timesTwo(x) { return x * 2; } console.log(addOne(timesTwo(3))); //7 console.log(timesTwo(addOne(3))); //8
今日から組み合わせて始めましょう
すべての機能的なプログラミング手法と同様に、組み合わせた機能は純粋な機能である必要があることを覚えておくことが重要です。要するに、これは、特定の値が関数に渡されるたびに、関数が同じ結果を返す必要があり、関数に独自の外部値を変更する副作用がないことを意味します。組み合わせのネストは、データに適用する関連機能のセットがある場合、非常に便利です。その関数のコンポーネントを再利用可能で簡単に組み合わせることができます。すべての機能的なプログラミング手法と同様に、既存のコードに組み合わせを追加して、慎重に慣れることをお勧めします。正しく行うと、結果はクリーンで乾燥し、コードを読みやすくなります。これは私たち全員が欲しいものではありませんか?
(以下はFAQであり、元のテキストに従って調整および合理化されており、複製情報は回避されます) 関数の組み合わせと保守可能なコードについてよく尋ねる質問
- プログラミングにおける機能の組み合わせは何ですか?
- 関数の組み合わせは、単純な関数をより複雑な関数に組み合わせるという概念です。構成要素のように、これらの小さな再利用可能な機能を使用して複雑で強力な機能を作成できます。これにより、コードをより読みやすく、メンテナンスしやすく、よりスケーラブルにすることができます。
- 関数の組み合わせは、小さな再利用可能な機能の使用を促進することにより、保守性を促進します。これらの機能は、理解、テスト、デバッグが簡単です。これらの小さな関数を組み合わせてより複雑な関数を作成すると、発生する可能性のある問題を特定して修正する方が簡単です。また、このモジュール式アプローチにより、システム全体に影響を与えることなく、コードの特定の部分を簡単に更新または変更できます。
- メンテナブルコードには、次のような多くのベストプラクティスが含まれます構造。
- 関数の組み合わせは、機能プログラミングの基本概念です。関数プログラミングは、計算を数学機能の評価として扱い、変化する状態と変動データを回避する例です。このパラダイムでは、関数の組み合わせは、より単純な機能からより複雑な関数を構築する上で重要な役割を果たし、それによりコードの再利用性と保守性を改善します。
-
関数の組み合わせを実装することの課題は何ですか? 関数の組み合わせには多くの利点がありますが、課題をもたらすこともできます。 1つの課題は、適切に管理されていない場合、特に複数の関数を組み合わせる場合、コードを読みにくくすることができるということです。複合関数のチェーンでのエラーと例外の処理も難しい場合があります。ただし、これらの課題は、優れたコーディングプラクティスと機能の組み合わせの正しい使用によって軽減できます。
-
関数の組み合わせでコードテストを改善する方法は? 関数の組み合わせにより、コードテストがより簡単かつ効率的になります。結合された関数は小さく独立した関数で構成されているため、各小さな関数を個別にテストできます。これにより、バグを分離して修正しやすくなります。また、ソフトウェアの各部分が個別にテストされて、適切に機能することを確認するために、単体テストの実践を容易にします。
以上が関数構成:保守可能なコードの構成要素の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

JavaScriptを学ぶことは難しくありませんが、挑戦的です。 1)変数、データ型、関数などの基本概念を理解します。2)非同期プログラミングをマスターし、イベントループを通じて実装します。 3)DOM操作を使用し、非同期リクエストを処理することを約束します。 4)一般的な間違いを避け、デバッグテクニックを使用します。 5)パフォーマンスを最適化し、ベストプラクティスに従ってください。

この記事の視差スクロールと要素のアニメーション効果の実現に関する議論では、Shiseidoの公式ウェブサイト(https://www.shisido.co.co.jp/sb/wonderland/)と同様の達成方法について説明します。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

Console.log出力の違いの根本原因に関する詳細な議論。この記事では、Console.log関数の出力結果の違いをコードの一部で分析し、その背後にある理由を説明します。 �...
