最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS中可以改善代碼的5種重構(gòu)技術(shù)分享

 更新時(shí)間:2023年06月09日 09:51:20   作者:王大冶  
代碼重構(gòu)涉及在不改變其外部功能的情況下對(duì)現(xiàn)有代碼進(jìn)行改進(jìn),這是編程的核心部分之一,所以下面我們將研究一些技巧,這些技巧可以幫助我們以更好的方式重構(gòu)代碼,希望對(duì)大家有所幫助

編寫代碼很有趣,我們非常喜歡它。直到一個(gè)錯(cuò)誤突然出現(xiàn),需要相當(dāng)長(zhǎng)的時(shí)間來(lái)解決它。有時(shí),錯(cuò)誤并不明顯,因?yàn)榇a按預(yù)期運(yùn)行,但在生產(chǎn)中可能會(huì)導(dǎo)致錯(cuò)誤??赡軙?huì)有性能和可訪問(wèn)性方面的錯(cuò)誤,這會(huì)導(dǎo)致用戶體驗(yàn)不佳。通過(guò)重構(gòu)代碼可以減少這類錯(cuò)誤。

代碼重構(gòu)涉及在不改變其外部功能的情況下對(duì)現(xiàn)有代碼進(jìn)行改進(jìn)。這是編程的核心部分之一,不能忽視,否則,我們將無(wú)法實(shí)現(xiàn)代碼的更好版本。代碼重構(gòu)可以提高代碼的可讀性、可維護(hù)性和可擴(kuò)展性。它還旨在提高性能和提高開發(fā)人員的生產(chǎn)力。

今天,我們將研究一些技巧,這些技巧可以幫助我們以更好的方式重構(gòu)代碼。

如何整合重構(gòu)

在尋找改進(jìn)重構(gòu)的技巧之前,讓我們看看如何將代碼重構(gòu)集成到你的編碼過(guò)程中??梢允褂靡韵陆ㄗh來(lái)實(shí)現(xiàn)這個(gè)目的:

  • 專門分配時(shí)間來(lái)重構(gòu)代碼
  • 將較大的重構(gòu)問(wèn)題分解為較小的問(wèn)題以進(jìn)行管理
  • 嘗試讓整個(gè)團(tuán)隊(duì)參與重構(gòu)過(guò)程
  • 使用自動(dòng)化工具,可以幫助您查找常見的重構(gòu)錯(cuò)誤

提取方法

這種方法涉及將代碼塊轉(zhuǎn)換為單獨(dú)的方法/函數(shù)。這樣做是為了提高代碼的結(jié)構(gòu)和可讀性。通過(guò)提取較長(zhǎng)且復(fù)雜的代碼塊,將其變成更小且易于管理的方法來(lái)實(shí)現(xiàn)這一目標(biāo)。

要使用這種技術(shù),我們首先需要找到一個(gè)執(zhí)行特定任務(wù)的代碼塊,這些任務(wù)有點(diǎn)復(fù)雜。在識(shí)別之后,我們提取代碼并將其放入一個(gè)新方法中。此外,確保為該方法起一個(gè)有意義的名稱。現(xiàn)在,在我們需要代碼的地方調(diào)用它們。

重構(gòu)前

function calculateInvoiceTotal(items) {
  let total = 0;
  for (let i = 0; i < items.length; i++) {
    const item = items[i];
    if (!item.quantity || !item.price) {
      console.error('Invalid item', item);
      continue;
    }
    const itemTotal = item.quantity * item.price;
    total += itemTotal;
  }
  return total;
}

重構(gòu)后

function calculateInvoiceTotal(items) {
  let total = 0;
  for (let i = 0; i < items.length; i++) {
    const item = items[i];
    const itemTotal = calculateItemTotal(item);
    total += itemTotal;
  }
  return total;
}
function calculateItemTotal(item) {
  if (!item.quantity || !item.price) {
    console.error('Invalid item', item);
    return 0;
  }
  return item.quantity * item.price;
}

可以看到我們?nèi)绾螌⒃?for 循環(huán)內(nèi)運(yùn)行的復(fù)雜代碼轉(zhuǎn)換為另一種方法以簡(jiǎn)化和提高可讀性。

用符號(hào)常量替換魔術(shù)數(shù)字

這個(gè)代碼重構(gòu)是為了編寫更清晰、更易讀的代碼。魔術(shù)數(shù)字只是指硬編碼的數(shù)值。編寫硬編碼的數(shù)字會(huì)給其他人帶來(lái)困惑,因?yàn)樗鼈兊哪康臎]有定義。將硬編碼的值轉(zhuǎn)換為具有有意義名稱的變量肯定有助于其他人理解它。此外,還可以為其添加注釋以進(jìn)一步解釋。這也有助于調(diào)試和降低將來(lái)出現(xiàn)錯(cuò)誤的風(fēng)險(xiǎn)。

重構(gòu)前

if (temperature > 32) {
  // Do something if temperature is above freezing
}

重構(gòu)后

const int FREEZING_POINT = 32;
if (temperature > FREEZING_POINT) {
   // Do something if temperature is above freezing
}

合并重復(fù)代碼

復(fù)制或相同的代碼可能會(huì)出現(xiàn)在來(lái)自不同位置的代碼中。這個(gè)代碼不需要完全相同,但它可以執(zhí)行類似的任務(wù)或從原始代碼稍微擴(kuò)展一點(diǎn)。重復(fù)的代碼可能導(dǎo)致多種問(wèn)題,包括增加維護(hù)成本、難以對(duì)代碼庫(kù)進(jìn)行更改以及引入錯(cuò)誤的風(fēng)險(xiǎn)更高。

在重構(gòu)代碼時(shí),必須注意查找重復(fù)的代碼。在找到這樣的代碼時(shí),處理這個(gè)問(wèn)題的一種方法是將這些代碼轉(zhuǎn)換為單個(gè)可重用的函數(shù)/方法。

重構(gòu)前

function calculateTotal(numbers) {
  let total = 0;
  for (let i = 0; i < numbers.length; i++) {
    total += numbers[i];
  }
  return total;
}
function calculateAverage(numbers) {
  let total = 0;
  for (let i = 0; i < numbers.length; i++) {
    total += numbers[i];
  }
  const average = total / numbers.length;
  return average;
}

重構(gòu)后

function calculateSum(numbers) {
  let total = 0;
  for (let i = 0; i < numbers.length; i++) {
    total += numbers[i];
  }
  return total;
}
function calculateTotal(numbers) {
  return calculateSum(numbers);
}
function calculateAverage(numbers) {
  const total = calculateSum(numbers);
  const average = total / numbers.length;
  return average;
}

在之前的代碼示例中,我們?cè)谇蠛筒⒃俅吻蠛鸵哉业狡骄?。在之后,我們用提供給它們兩者之和的函數(shù)替換了這個(gè)過(guò)程。

簡(jiǎn)化方法

當(dāng)你尋找要優(yōu)化的方法/功能時(shí),它與識(shí)別非常相似。可以為邏輯做簡(jiǎn)化的方法或使其可讀和清潔。此技術(shù)可以幫助你減少代碼行。

此方法可以分解為較小的代碼塊,可以在函數(shù)中找到它們以進(jìn)行優(yōu)化。以下是這些代碼塊:

  • 刪除不必要的變量和表達(dá)式:可能有一些用于調(diào)試的變量或表達(dá)式被遺漏,例如JavaScript中的console.log。
  • 使用內(nèi)置功能:有時(shí)使用庫(kù)或語(yǔ)言的內(nèi)置功能會(huì)更好。因?yàn)榭梢杂酶俚拇a實(shí)現(xiàn)相同的功能。
  • 簡(jiǎn)化條件語(yǔ)句:如果一個(gè)方法有復(fù)雜的條件語(yǔ)句,請(qǐng)考慮通過(guò)合并條件或使用三元運(yùn)算符來(lái)簡(jiǎn)化它們。

使用懶加載

這是一種只在需要時(shí)加載對(duì)象的技術(shù)。這可以通過(guò)減少內(nèi)存使用量來(lái)提高應(yīng)用程序的性能。這將加快應(yīng)用程序的加載速度。

這種技術(shù)在Web開發(fā)中非常流行。尤其是在像React這樣的JavaScript框架中,可以通過(guò)懶加載導(dǎo)入不同的組件。這也可以根據(jù)需要加載圖像。

重構(gòu)前

import React from 'react';
import MyComponent from './MyComponent';
const App = () => {
  return (
    <div>
      <h1>My App</h1>
      <MyComponent />
    </div>
  );
}
export default App;

重構(gòu)后

import React, { lazy, Suspense } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
const App = () => {
  return (
    <div>
      <h1>My App</h1>
      <Suspense fallback={<div>Loading...</div>}>
        <MyComponent />
      </Suspense>
    </div>
  );
}
export default App;

在更新版本中,我們使用 lazy 功能異步導(dǎo)入 MyComponent 組件。這意味著該組件僅在實(shí)際需要時(shí)才加載,從而提高了我們應(yīng)用程序的整體性能。我們還使用 Suspense 組件在加載組件時(shí)顯示回退 UI。

總結(jié)

重構(gòu)是任何希望提高代碼質(zhì)量、性能和可維護(hù)性的開發(fā)者的基本實(shí)踐。通過(guò)花時(shí)間分析和優(yōu)化代碼,可以消除冗余,降低復(fù)雜性,并創(chuàng)建更高效且可擴(kuò)展的應(yīng)用程序。

通過(guò)不斷審查和改進(jìn)你的代碼,你可以創(chuàng)建一個(gè)更強(qiáng)大、更具彈性的應(yīng)用程序。希望這篇文章能幫助您了解一些重構(gòu)技巧。

到此這篇關(guān)于JS中可以改善代碼的5種重構(gòu)技術(shù)分享的文章就介紹到這了,更多相關(guān)JS重構(gòu)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解基于Wepy開發(fā)小程序插件(推薦)

    詳解基于Wepy開發(fā)小程序插件(推薦)

    這篇文章主要介紹了詳解基于Wepy開發(fā)小程序插件(推薦),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • ES6 Object方法擴(kuò)展的應(yīng)用實(shí)例分析

    ES6 Object方法擴(kuò)展的應(yīng)用實(shí)例分析

    這篇文章主要介紹了ES6 Object方法擴(kuò)展的應(yīng)用,結(jié)合實(shí)例形式總結(jié)分析了ES6針對(duì)對(duì)象方法的擴(kuò)展與優(yōu)化,需要的朋友可以參考下
    2019-06-06
  • 等待指定時(shí)間后自動(dòng)跳轉(zhuǎn)或關(guān)閉當(dāng)前頁(yè)面的js代碼

    等待指定時(shí)間后自動(dòng)跳轉(zhuǎn)或關(guān)閉當(dāng)前頁(yè)面的js代碼

    本文為大家詳細(xì)介紹下如何通過(guò)js實(shí)現(xiàn)等待指定時(shí)間后自動(dòng)跳轉(zhuǎn)或關(guān)閉當(dāng)前頁(yè)面的腳步代碼,感興趣的朋友可以參考下哈,希望對(duì)大家有所幫助
    2013-07-07
  • JS函數(shù)的返回值如何使用

    JS函數(shù)的返回值如何使用

    函數(shù)是一塊js代碼塊,被定義一次但可以執(zhí)行和調(diào)用多次,js中的函數(shù)也是對(duì)象可以像其他對(duì)象那樣操作和執(zhí)行,js函數(shù)也被稱為函數(shù)對(duì)象,本文給大家介紹JS函數(shù)的返回值如何使用,感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • javascript trim 去空格函數(shù)實(shí)現(xiàn)代碼

    javascript trim 去空格函數(shù)實(shí)現(xiàn)代碼

    去除字符串左右兩端的空格,在vbscript里面可以輕松地使用 trim、ltrim 或 rtrim,但在js中卻沒有這3個(gè)內(nèi)置方法,需要手工編寫。下面的實(shí)現(xiàn)方法是用到了正則表達(dá)式,效率不錯(cuò),并把這三個(gè)方法加入String對(duì)象的內(nèi)置方法中去。
    2008-10-10
  • Javascript模擬scroll滾動(dòng)效果腳本

    Javascript模擬scroll滾動(dòng)效果腳本

    項(xiàng)目需要寫了一段模擬Scroll滾動(dòng)代碼,分享的同時(shí),我有些疑問(wèn),希望大家能幫忙解決,代碼如下
    2008-09-09
  • Bootstrap中的fileinput 多圖片上傳及編輯功能

    Bootstrap中的fileinput 多圖片上傳及編輯功能

    這篇文章主要介紹了Bootstrap中的fileinput 多圖片上傳及編輯功能的實(shí)現(xiàn),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • 讓插入到 innerHTML 中的 script 跑起來(lái)的實(shí)現(xiàn)代碼

    讓插入到 innerHTML 中的 script 跑起來(lái)的實(shí)現(xiàn)代碼

    在做 ajax 編程時(shí),我們常常需要將 xmlhttp 獲取到的頁(yè)面內(nèi)容通過(guò) innerHTML 來(lái)賦給某個(gè)容器(比如 div、span 或者 td 等),但是這里存在一個(gè)問(wèn)題,就是我們將要賦給 innerHTML 的頁(yè)面內(nèi)容如果包含有腳本程序,這些腳本程序不管是外部腳本,還是內(nèi)部腳本,可能(1)都不會(huì)被執(zhí)行。
    2006-07-07
  • preact組件案例的使用詳解

    preact組件案例的使用詳解

    SelectValue是一個(gè)Preact組件,用于創(chuàng)建一個(gè)下拉選擇框,它接收props如value、setfn、options和disabled,用于更新父組件中的值、處理下拉選擇框的值改變事件、顯示選項(xiàng)和禁用或啟用下拉選擇框,本文介紹preact組件案例的使用詳解,感興趣的朋友一起看看吧
    2025-03-03
  • js實(shí)現(xiàn)瀏覽器的各種菜單命令比如打印、查看源文件等等

    js實(shí)現(xiàn)瀏覽器的各種菜單命令比如打印、查看源文件等等

    瀏覽器的各種菜單命令比如打印、查看源文件、加入收藏等等,這些在js中時(shí)完全可以實(shí)現(xiàn)的,本文搜集整理了一些,感興趣的朋友可以參考下
    2013-10-10

最新評(píng)論

上饶县| 洪雅县| 长沙县| 盖州市| 宁远县| 合阳县| 泰兴市| 侯马市| 鹤壁市| 娱乐| 吉首市| 中卫市| 望谟县| 河间市| 普安县| 连云港市| 大连市| 十堰市| 乳山市| 济源市| 喀什市| 明水县| 达孜县| 阿克苏市| 双鸭山市| 焦作市| 祁门县| 东山县| 朝阳县| 嵊州市| 宣威市| 江华| 景泰县| 昌宁县| 简阳市| 内黄县| 天台县| 石屏县| 景德镇市| 正定县| 金华市|