偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

JavaScript重構(gòu)技巧 — 對象和值

開發(fā) 前端
JavaScript 是一種易于學(xué)習(xí)的編程語言,編寫運行并執(zhí)行某些操作的程序很容易。然而,要編寫一段干凈的JavaScript 代碼是很困難的。在本文中,我們將介紹一些優(yōu)化 JS 類和對象的重構(gòu)思路。

JavaScript 是一種易于學(xué)習(xí)的編程語言,編寫運行并執(zhí)行某些操作的程序很容易。然而,要編寫一段干凈的JavaScript 代碼是很困難的。

在本文中,我們將介紹一些優(yōu)化 JS 類和對象的重構(gòu)思路。

[[329438]]

用常量來表示數(shù)字

如果我們有很多重復(fù)的值且表示一樣的含義,但沒有明確地說明,那么我們應(yīng)該將它們轉(zhuǎn)換為常量,以便每個人都知道它們的含義,并且如果需要更改,我們只需更改一個地方就行了。

例如我們可能會這樣寫代碼:

  1. const getWeight = (mass) => mass * 9.81 
  2. const potentialEnergy = (mass, height) => mass * height * 9.81 

對于含義相同的數(shù)學(xué)我可以用常量表示:

  1. const GRAVITATIONAL_CONSTANT = 9.81; 
  2. const getWeight = (mass) => mass * GRAVITATIONAL_CONSTANT 
  3. const potentialEnergy = (mass, height) => mass * height * GRAVITATIONAL_CONSTANT 

現(xiàn)在我們知道9.81實際上意味著GRAVITATIONAL_CONSTANT,我們不必重復(fù)自己。

上面我們用常量 GRAVITATIONAL_CONSTANT 表示 9.81 ,這樣別人一看就知道它表示是萬有引力常數(shù)常量。

封裝字段

我們可以將getter和setter添加到類的字段中,這樣就不心直接對類的字段進行操作。

例如我們可能會這樣寫代碼:

  1. class Person { 
  2.   constructor(name) { 
  3.     this.name = name; 
  4.   } 

如果要控制如何設(shè)置值,可以這樣重構(gòu):

  1. class Person { 
  2.   constructor(name) { 
  3.     this._name = name 
  4.   } 
  5.  
  6.   get name() { 
  7.     return this._name 
  8.   } 
  9.  
  10.   set name() { 
  11.     this._name = name 
  12.   } 

這樣,我們就可以控制如何設(shè)置值,因為我們可以在setter中放入代碼來設(shè)置名稱。我們還可以控制誰能獲得名稱,因為它是在getter中返回的。

用數(shù)組類代替字段

我們可以將字段替換為其自己的數(shù)據(jù)類,這樣在記錄數(shù)據(jù)中會有更強靈活性。

例如我們可能會這樣寫代碼:

  1. class Person { 
  2.   constructor(name, bloodGroup) { 
  3.     this.name = name; 
  4.     this.bloodGroup = bloodGroup; 
  5.   } 
  6. const person = new Person('joe', 'a') 

如果我們想擴充 bloodGroup (血型)的種類,我們可以把 bloodGroup 重構(gòu)成一個類。

  1. class BloodGroup { 
  2.   constructor(name) { 
  3.     this.bloodGroup = name
  4.   } 
  5. class Person { 
  6.   constructor(name, bloodGroup) { 
  7.     this.name = name; 
  8.     this.bloodGroup = bloodGroup; 
  9.   } 
  10. const bloodGroup = new BloodGroup('a'); 
  11. const person = new Person('joe', bloodGroup) 

這樣,我們就可以在bloodGroup字段中存儲更多種類的數(shù)據(jù)。

用狀態(tài)/策略替換類型代碼

有時,我們可以根據(jù)對象的類型創(chuàng)建子類,而不是在類中使用類型字段。這樣,我們就可以在它們自己的子類中擁有兩個類不共享的更多成員。

例如我們可能會這樣寫代碼:

  1. class Animal { 
  2.   constructor (type) { 
  3.     this.type = type 
  4.   } 
  5.  
  6. const cat = new Animal('cat') 
  7. const dog = new Animal('dog') 

我們可以根據(jù) type 類型來重構(gòu)對應(yīng)的類:

  1. class Animal { 
  2.   //... 
  3. class Cat extends Animal { 
  4.   //... 
  5. class Dog extends Animal { 
  6.   //... 
  7. const cat = new Cat(); 
  8. const dog = new Dog(); 

在上面的示例中,我們單獨編寫一個Animal類,而另外添加Cat和Dog類,它們是Animal類的子類。

這樣我們可以 Cat 和 Dog 類中共享的屬性保存在各自的類的,把共享的放在 Animal 類中。

分解條件表達式

我們可以將長的條件表達式分解為更小的條件表達式。

例如我們可能會這樣寫代碼:

  1. let ieIEMac = navigator.userAgent.toLowerCase().includes("mac") && navigator.userAgent.toLowerCase().includes("ie") 

我們可以這樣重構(gòu)它:

  1. let userAgent = navigator.userAgent.toLowerCase(); 
  2. let isMac = userAgent.includes("mac"); 
  3. let isIE = userAgent.toLowerCase().includes("ie"); 
  4. let isMacisMacIE = isMac && isIE; 

我們將冗長又難懂的條件表達式分解多個短小表達式,這樣會大大滴增加閱讀性。

總結(jié)

如果我們有很多重復(fù)的值且表示一樣的含義,但沒有明確地說明,那么我們應(yīng)該將它們轉(zhuǎn)換為常量,以便每個人都知道它們的含義,并且如果需要更改,我們只需更改一個地方就行了。

為了更好控制類的屬性,我們可以為它添加getter和setter方法。

如果我們有type字段,則可以用它們自己的子類替換它們。

最后,我們可以將長條件表達式分解為較小的條件表達式,以便于閱讀和理解。

本文轉(zhuǎn)載自微信公眾號「大遷世界」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系大遷世界公眾號。

 

責(zé)任編輯:趙寧寧 來源: 大遷世界
相關(guān)推薦

2020-06-10 08:37:21

JavaScript重構(gòu)技巧

2020-06-08 08:46:59

JavaScript條件類名

2020-05-27 09:30:52

JavaScript重構(gòu)函數(shù)

2020-06-01 08:42:11

JavaScript重構(gòu)函數(shù)

2011-06-09 15:27:01

JavaScript

2010-10-08 09:42:23

JavaScript方

2021-05-11 10:36:16

JavaScript原始值對象

2011-06-03 13:48:18

JavaScript重構(gòu)

2023-10-16 07:55:15

JavaScript對象技巧

2010-01-06 10:58:06

建立JavaScrip

2020-07-28 08:14:30

JavaScript開發(fā)技術(shù)

2022-11-28 23:48:06

JavaScript編程語言技巧

2017-03-06 20:39:41

整潔代碼Clean Code

2023-09-05 08:00:00

開源GreptimeDB

2020-12-17 07:52:38

JavaScript

2023-07-24 07:11:43

2025-02-13 12:52:27

JavaScrip代碼開發(fā)

2022-05-30 09:44:11

TypeScriptJavaScript技巧

2020-09-23 10:09:43

Dockerfile

2020-07-14 13:16:32

JavaScript解構(gòu)對象
點贊
收藏

51CTO技術(shù)棧公眾號