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 を実行し、ローカル メモリを最適化する方法の詳細な説明

推薦する

HTML 形式の JSON 出力の例 (テスト インターフェース)

JSON データを美しいインデント形式で表示するには、最も単純な JSON.stringify 関...

Nginx 設定場所のマッチング優先順位の簡単な分析

序文Nginx 構成のサーバー ブロック内の場所は、リクエスト URI を一致させるために使用され、...

LinuxシステムにISOファイルをインストールする方法

Linux システムで iso ファイルをインストールするにはどうすればいいですか?インストール手順...

Linux システム修復モード (シングル ユーザー モード)

目次序文1. シングルユーザーモードでの一般的なバグ修正2. シングルユーザーモードでシステムパスワ...

vue プロジェクトのデプロイと Nginx でのプロキシ設定の問題の分析

1. nginxをインストールして起動する # nginxをインストールする sudo apt-ge...

Dockerでプロジェクトを実行する方法

1. プロジェクトwarが保存されているディレクトリを入力しますDockerfileを編集する vi...

MySQL ストアド プロシージャで case ステートメントを使用する詳細な例

この記事では、例を使用して、MySQL ストアド プロシージャでの case ステートメントの使用方...

IE6/7 で絶対配置された要素が不可解に消えたりブロックされたりする問題を解決する方法

1. 絶対配置レイヤーの隣接フローティング レイヤーの幅が親レイヤーの幅と等しくなく、フロートがクリ...

MySQL 8.0.11 の新機能の紹介

MySQL 8.0 for Windows v8.0.11 公式無料バージョン 64 ビット1. デ...

CentOS6 アップグレード glibc 操作手順

目次背景glibc 2.14をコンパイルするソフトリンクを変更するやっと背景テスト環境には Cent...

Vueは双方向データバインディングを実装します

この記事の例では、双方向データバインディングを実装するためのVueの具体的なコードを参考までに共有し...

MySQLのルートパスワードをリセットする最も簡単な方法

私の MySQL バージョンは MYSQL V5.7.9 です。古いバージョンを使用してください: ...

MySQLとRedisでセカンダリキャッシュを実装する方法の詳細な説明

Redis の紹介Redis は完全にオープンソースで無料であり、BSD プロトコルに準拠しており、...

JavaScriptはオブジェクトの不要なプロパティを削除します

目次例方法1: 削除方法2: 分解補充する要約するThinking シリーズは、10 分で実用的なプ...

HTML でスタイルを使用して属性を追加する例

必要なリンクにインライン スタイルを追加します。コードをコピーコードは次のとおりです。 <a ...