JavaScript コードベースをよりクリーンにする 5 つの方法

JavaScript コードベースをよりクリーンにする 5 つの方法

1. 短絡や条件文の代わりにデフォルトのパラメータを使用する

通常、デフォルト引数は短絡よりも簡潔です。

関数 SomeMethod(paramThatCanBeUndefined) {

   const localValue = paramThatCanBeUndefined || "デフォルト値";
   コンソール.log(ローカル値)
   // ...
}
SomeMethod() // デフォルト値
SomeMethod("SomeValue") // SomeValue

次のことを試してください。

関数SomeMethod(
  console.log(未定義の可能性があるパラメータ)
  // ...
}
SomeMethod() // デフォルト値
SomeMethod("SomeValue") // SomeValue

ステートメント: ''、"、false、null、0、NaN などの偽の値はデフォルト値に置き換えられません。

function SomeMethod(paramThatCanBeUndefined = "デフォルト値") {        
  console.log(未定義の可能性があるパラメータ)  
  // ...
}
SomeMethod(null) // デフォルト値は設定されず、代わりにnullが設定されます
SomeMethod("SomeValue") // SomeValue

2. 複数の条件の処理

const Conditions = ["条件 2","条件文字列 2"];
いくつかの関数(str){
  if(str.includes("someValue1") || str.includes("someValue2")){
    真を返す
  }それ以外{
    偽を返す
  }
}

これをよりきれいに行う方法は次のとおりです。

いくつかの関数(str){
   const 条件 = ["someValue1","someValue2"];
   条件.some(condition=>str.includes(condition)) を返します。
}

3. スイッチを動的なキーと値のペア(オブジェクトリテラルなど)に置き換える

スイッチ バージョン (またはスイッチを if/else に置き換えます):

定数UserRole = {
  管理者: 「管理者」、
  GENERAL_USER: 「一般ユーザー」、
  SUPER_ADMIN: 「スーパー管理者」、
};
関数 getRoute(userRole = "デフォルトロール"){


  スイッチ(ユーザーロール){
    UserRole.ADMINの場合:
      「/admin」を返す
    UserRole.GENERAL_USERの場合:
        「/GENERAL_USER」を返す
    UserRole.SUPER_ADMINの場合:
        「/superadmin」を返す
    デフォルト:
      戻る "/" 
  }

}
console.log(getRoute(UserRole.ADMIN)) // "/admin" を返す
console.log(getRoute("Anything")) // デフォルトパスを返す
console.log(getRoute()) // デフォルトパスを返す
console.log(getRoute(null)) // デフォルトパスを返す

// 新しいケースが到着した場合
// switch の代わりに if else を考えることもできます

動的キーと値のペアのバージョン:

定数UserRole = {
   管理者: 「管理者」、
   GENERAL_USER: 「一般ユーザー」、
   SUPER_ADMIN: 「スーパー管理者」、
};
関数 getRoute(userRole = "デフォルトロール"){
 定数appRoute = {
  [UserRole.ADMIN]: "/admin",
  [UserRole.GENERAL_USER]: "/user",
  [UserRole.SUPER_ADMIN]: "/スーパー管理者"
 };
 return appRoute[userRole] || "デフォルトパス";
}
console.log(getRoute(UserRole.ADMIN)) // "/admin" を返す
console.log(getRoute("Anything")) // デフォルトパスを返す
console.log(getRoute()) // デフォルトパスを返す
console.log(getRoute(null)) // デフォルトパスを返す
// ここでは switch/if-else は不要です。
// さらなる拡張が容易

4. 関数パラメータが多すぎないようにする

関数 myFunction(従業員名、役職、年数、専攻){
 `${employeeName} は ${jobTitle} として働いており、${majorExp} で ${yrExp} 年の経験があります` を返します
}
//出力は、ジョンがプロジェクト管理で12年の経験を持つプロジェクトマネージャーとして働いているようなものになります
// 次のように呼び出すことができます
console.log(myFunction("John","プロジェクト マネージャー",12,"プロジェクト管理"))
// ***** 問題は *****
// 「クリーンコード」原則違反
// パラメータの順序付けは重要です
// 使用されていない場合は未使用のパラメータの警告
// テストでは多くのエッジケースを考慮する必要があります。

より簡潔な方法は次のとおりです。

関数 myFunction({従業員名,役職,年数,専攻数}){
 `${employeeName} は ${jobTitle} として働いており、${majorExp} で ${yrExp} 年の経験があります` を返します
}
//出力は、ジョンがプロジェクト管理で12年の経験を持つプロジェクトマネージャーとして働いているようなものになります
// 次のように呼び出すことができます
const mockTechPeople = {
  従業員名:"ジョン",
  jobTitle:"プロジェクトマネージャー",
  年数:12,
  専攻分野:「プロジェクト管理」
}
コンソールログ(myFunction(mockTechPeople))
// ES2015/ES6 分割構文が動作しています
// 必要な変数に目的の値をマップします。

5. Object.assignを使用してデフォルトのオブジェクトを設定する

これは面倒なようです:

定数someObject = {
 タイトル: null、
 subTitle: "サブタイトル",
 ボタンカラー: null、
 無効: true
};
関数createOption(someObject) {
 someObject.title = someObject.title || "デフォルトのタイトル";
 someObject.subTitle = someObject.subTitle || "デフォルトのサブタイトル";
 someObject.buttonColor = someObject.buttonColor || "青";
 someObject.disabled = someObject.disabled !== 未定義ですか? someObject.disabled : true;
 someObjectを返す
}
console.log(createOption(someObject));

// 出力は次のようになります 
// {title: 'デフォルトのタイトル'、subTitle: 'サブタイトル'、buttonColor: 'blue'、disabled: true}

このアプローチの方が良いようです:

定数someObject = {
  タイトル: null、
  subTitle: "サブタイトル",
  ボタンカラー: null、
  無効: true
 };
 関数createOption(someObject) {
  const newObject = Object.assign({
   タイトル: "デフォルトのタイトル",
   subTitle: "デフォルトのサブタイトル",
   ボタンの色: "青",
   無効: true
 },someObject)
 新しいオブジェクトを返す
 }
 console.log(creteOption(someObject));

これで、JavaScript コードベースをよりクリーンにする 5 つの方法についての記事は終了です。JavaScript コードベースをよりクリーンにする 5 つの方法についての詳細は、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。読んでいただきありがとうございます

以下もご興味があるかもしれません:
  • クッキーを書き込むJavaScriptコードライブラリcookieLibrary.js
  • JS コードベースをゼロから構築する
  • Java FastJsonの簡単な使い方
  • JavaScript 中断要求に対するいくつかの解決策の詳細な説明
  • Vue.js パフォーマンス最適化 N 個のヒント (収集する価値あり)
  • AngularJSは、テーブルの一部の列を拡大縮小するサンプルコードを実装します。
  • JavaScript は、シンプルな虫眼鏡の最も完全なコード分析を実装します (ES5)
  • シンプルなカルーセルの最も完全なコード分析を実装するJavaScript(ES6オブジェクト指向)
  • シンプルなカルーセル チャートを実装するための JavaScript の最も完全なコード分析 (ES5)
  • シンプルなショッピングカートの最も完全なコード分析を実装する JavaScript (ES6 オブジェクト指向)

<<:  MySQLデータベースが予期せずクラッシュし、テーブルデータファイルが破損して起動できなくなる問題を解決します。

>>:  Linux システムで jmeter を実行し、ローカル メモリを最適化する方法の詳細な説明

推薦する

jsネイティブウォーターフォールフロープラグイン制作

この記事では、jsネイティブウォーターフォールフロープラグインの具体的なコードを参考までに共有します...

Web デザイン ヘルプ: Web フォント サイズ データ リファレンス

<br />内容はインターネットから転載したものです。どこから見つけたのか忘れてしまいま...

ドラッグフォトウォールを実現するネイティブJS

この記事では、ネイティブ JS で実装されたドラッグ可能な写真ウォールを紹介します。効果は次のとおり...

MYSQLの主キー制約とユニーク制約の違いについて簡単に説明します。

目次主キー制約ユニーク制約主キー制約PRIMARY KRY 主キーは一意です。テーブルには主キーを ...

MySQLのslave_exec_modeパラメータの詳細な説明

今日、slave_exec_modeというパラメータを偶然見ました。マニュアルの説明から、このパラメ...

Navicat でストアド プロシージャ、トリガーを作成し、カーソルを使用する簡単な例 (画像とテキスト)

1. テーブルを作成する<br /> まず、2 つのテーブル (users テーブルと...

MySQLデータのバックアップとリカバリの実装方法の分析

この記事では、例を使用して MySQL データのバックアップと復元の方法について説明します。ご参考ま...

時間に基づいて日付をクエリするためのMySQL最適化テクニック

たとえば、昨日新規登録されたユーザーを照会するには、次の 2 つの書き方があります。 説明する ch...

Linuxはsttyを使用して端末の回線設定を表示および変更します。

Sttty は、Linux で端末設定を変更および印刷するための一般的なコマンドです。 1. パラ...

Azure Container Registry を使用してイメージを保存する際の問題

Azure Container Registry は、Docker Registry 2.0 仕様に...

MySQL オンライン DDL ツール gh-ost 原理分析

目次1. はじめに1.1 原則1.2 プロセス1.3 特徴1.4 githubアドレス2. テスト環...

nginx 設定ファイルで環境変数を使用する方法

序文Nginx はパフォーマンスを重視して設計された HTTP サーバーです。Apache や li...

Linux で Golang をインストールする方法

Go は、シンプルで信頼性が高く、効率的なソフトウェアを簡単に構築できるオープンソース プログラミン...

ユーザーエクスペリエンスの構築

<br />おそらく、あなたは会社に入社したばかりで、その会社が「ユーザビリティ」に関す...

MySQLカーソルの使い方と機能の詳細な説明

[mysqlカーソルの使い方と機能]例:現在、テーブル A、B、C の 3 つのテーブルがあります。...