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

推薦する

複数レベルの複雑な動的ヘッダーの avue-crud 実装例

目次序文バックグラウンドデータの結合フロントエンドデータ表示ページ効果表示Avue.js は、既存の...

HTML+CSS+JS でキャンバスがマウスの小さな円に追従する特殊効果のソースコードを実現

効果(ソースコードは最後にあります): 成し遂げる: 1. タグを定義します。 <h1>...

CentOS6.5 でファイル共有サービス Samba を構築するチュートリアル

Samba サービス:このコンテンツはサンバサービス学習者の参考用ですケースの説明:企業の管理者は、...

CSSをインポートする方法は何ですか?linkと@importの違いは何ですか?選択方法

Taobao のウェブページはインポートを使用していますが、多くのウェブサイトはリンクを使用していま...

カレンダー効果を実現するための Bootstrap+JQuery

この記事では、カレンダー効果を実現するためのBootstrap+Jqueryの具体的なコードを参考ま...

HTML いくつかの特別な分割線効果

1. 基本ライン 2. 特殊効果(効果は独立しておらず、互いに組み合わせることができます) 1. 両...

Vue での Vue.prototype の使用に関する詳細な説明

目次1. 基本的な例2. インスタンスプロトタイプのスコープを設定する3. グローバル変数の登録と使...

tomcat ログ ディレクトリ内のログ ファイルの分析 (概要)

tomcat が起動されるたびに、次のログ ファイルがログ ディレクトリに自動的に生成され、日付順...

MySQLでストアドプロシージャをデバッグする最も簡単な方法

同僚から、一時テーブルを使用して変数データを挿入して表示する方法を教わったことがありますが、この方法...

HTML でフレームセット タグを使用するチュートリアル

フレームセット ページは通常の Web ページとは多少異なります。依然として <HTML>...

Linux での umask の使用に関する詳細な説明

私は最近 Linux を学び始めました。Ma Ge の umask に関する Linux コースを読...

Vue プロジェクトに Electron を追加するための詳細なコード

1. package.jsonに追加する "メイン": "electr...

docker runコンテナの自動終了の解決策

今日、Dockerfile を使用してイメージを作成したときに問題が発生し、イメージの実行後にコンテ...