成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JavaScript重構技巧 — 對象和值

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

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

在本文中,我們將介紹一些優化 JS 類和對象的重構思路。

[[329438]]

用常量來表示數字

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

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

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

對于含義相同的數學我可以用常量表示:

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

現在我們知道9.81實際上意味著GRAVITATIONAL_CONSTANT,我們不必重復自己。

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

封裝字段

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

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

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

如果要控制如何設置值,可以這樣重構:

  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.   } 

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

用數組類代替字段

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

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

  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 重構成一個類。

  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字段中存儲更多種類的數據。

用狀態/策略替換類型代碼

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

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

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

我們可以根據 type 類型來重構對應的類:

  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") 

我們可以這樣重構它:

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

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

總結

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

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

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

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

本文轉載自微信公眾號「大遷世界」,可以通過以下二維碼關注。轉載本文請聯系大遷世界公眾號。

 

責任編輯:趙寧寧 來源: 大遷世界
相關推薦

2020-06-10 08:37:21

JavaScript重構技巧

2020-06-08 08:46:59

JavaScript條件類名

2020-06-01 08:42:11

JavaScript重構函數

2020-05-27 09:30:52

JavaScript重構函數

2011-06-09 15:27:01

JavaScript

2010-10-08 09:42:23

JavaScript方

2011-06-03 13:48:18

JavaScript重構

2021-05-11 10:36:16

JavaScript原始值對象

2023-10-16 07:55:15

JavaScript對象技巧

2010-01-06 10:58:06

建立JavaScrip

2022-11-28 23:48:06

JavaScript編程語言技巧

2020-07-28 08:14:30

JavaScript開發技術

2017-03-06 20:39:41

整潔代碼Clean Code

2023-07-24 07:11:43

2023-09-05 08:00:00

開源GreptimeDB

2025-02-13 12:52:27

JavaScrip代碼開發

2020-12-17 07:52:38

JavaScript

2022-05-30 09:44:11

TypeScriptJavaScript技巧

2020-09-23 10:09:43

Dockerfile

2021-09-06 10:21:27

JavaScript表單對象 前端
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品视频一区二区三区 | 亚洲v日韩v综合v精品v | 国产欧美日韩精品一区二区三区 | 亚洲国产专区 | 亚洲精品一区二区三区蜜桃久 | 亚卅毛片 | 国产欧美精品一区二区三区 | eeuss国产一区二区三区四区 | 丝袜 亚洲 另类 欧美 综合 | 日韩久久久久 | av毛片 | 中文字幕在线一区二区三区 | av国产精品| 国产精品一区二区久久 | 精品一区二区久久久久久久网站 | 久久久久久久久久久久久9999 | a级在线免费观看 | 日韩免费高清视频 | 精品久久久久久18免费网站 | 成人看片在线观看 | 久久www免费视频 | 精品一区二区三区不卡 | h片免费在线观看 | 国产精品国产精品国产专区不片 | 黄色亚洲 | 欧洲av在线 | 欧美又大粗又爽又黄大片视频 | 久久精品一级 | 国产高清在线 | 精品国产乱码久久久久久中文 | av在线成人 | 一区免费| 色视频在线播放 | 欧美黄视频 | 亚洲毛片在线观看 | 久久狼人天堂 | 久草在线在线精品观看 | 日韩一区二区三区四区五区六区 | 97色免费视频 | 九九久久久久久 | 国产精品视频网站 |