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

推薦する

Vueはシンプルな計算機能を実装します

この記事では、参考までに、簡単な計算機機能を実現するためのVueの具体的なコードを紹介します。具体的...

MySQL 8.0.15 のインストールと設定方法のグラフィックチュートリアル

この記事ではMySQL 8.0.15のインストールと設定方法を参考までに記録します。具体的な内容は以...

Linux で MySQL 5.6 X64 バージョンをインストールする詳細な手順

環境: 1. CentOS6.5 X64 2.mysql-5.6.34-linux-glibc2.5...

CentOS で MySQL を完全にアンインストールする方法

この記事では、CentOSでのMySQLの完全アンインストールについて記録しています。具体的な内容は...

Webpackを使用して複数ページのプログラムを構築するための実装手順

webpack を使用してシングルページのプログラムを構築することは非常に一般的ですが、実際の開発で...

HTML の <input> タグの詳細な説明と、それを無効にする方法

定義と使用法<input> タグはユーザー情報を収集するために使用されます。 type ...

MySQL 5.0.96 for Windows x86 32 ビット グリーン簡易版インストール チュートリアル

MySQL 5.0 は、いくつかの「高度な機能」があるため定番となっています。これは、Windows...

既存のDockerコンテナの内容を変更する方法

1. Docker psはコンテナをリストします 2. Docker cpはコンテナにファイルをコピ...

Ubuntu 18.0.4 は mysql をインストールし、エラー 1698 (28000): ユーザー ''root''@''localhost'' のアクセスが拒否されましたを解決します

序文最近 Linux を学び、その後 Win から Ubuntu に変更しました。以前インストールし...

Linux ログ表示方法 6 つのまとめ

バックエンド プログラマーは、さまざまな場所で Linux を扱います。Linux ログの読み方がわ...

ウェブデザインの仕事に応募する方法

<br />みなさんこんにちは!ここで皆さんとチャットできて光栄です! (*^__^*)...

テーブルを作成するための HTML dl、dt、dd タグとテーブル作成テーブル

ウェブサイトの開発とメンテナンスのコストが削減されるだけでなく、コードもよりセマンティックになります...

CN2、GIA、CIA、BGP、IPLC はどういう意味ですか?

CN2ラインとは何ですか? CN2 は、China Telecom Next Carrier Ne...

Linux の一般的なテキスト処理コマンドと vim テキストエディタ

今日は、いくつかの一般的なテキスト処理コマンドとvimテキストエディタを紹介します。 3日目 - 一...

WEB2.0の片手ルール

<br />前回のCSSに関する記事は、多くの人にあまり理解されませんでした。そのため、...