人人妻人人澡人人爽人人精品av_精品乱码一区内射人妻无码_老司机午夜福利视频_精品成品国色天香摄像头_99精品福利国产在线导航_野花社区在线观看视频_大地资源在线影视播放_东北高大肥胖丰满熟女_金门瓶马车内剧烈运动

首頁(yè)>國(guó)內(nèi) > 正文

三個(gè)實(shí)用重構(gòu)技術(shù),改進(jìn)你的代碼|環(huán)球熱議

2023-06-26 17:03:09來(lái)源:Go學(xué)堂

大家好,我是漁夫子。

代碼重構(gòu)是在不改變外部功能的情況下對(duì)現(xiàn)有代碼進(jìn)行改進(jìn)。它是編程的核心部分之一,不容忽視。否則,您就無(wú)法獲得更好的代碼版本。代碼重構(gòu)可以增強(qiáng)代碼的可讀性、可維護(hù)性和可擴(kuò)展性。它還旨在提高性能和開(kāi)發(fā)人員的工作效率。今天,我們將探討一些可以幫助您更好地重構(gòu)代碼的技巧。

如何重構(gòu)

在尋找重構(gòu)的技術(shù)之前,讓我們看看如何將代碼重構(gòu)集成到編碼過(guò)程中。以下建議可用于此目的:


(相關(guān)資料圖)

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

現(xiàn)在,讓我們從用于重構(gòu)的技術(shù)開(kāi)始。

技術(shù)1:提取方法

此方法包括將代碼塊轉(zhuǎn)換為單獨(dú)的方法/函數(shù)。這樣做是為了改進(jìn)代碼的結(jié)構(gòu)和可讀性。它是通過(guò)將長(zhǎng)而復(fù)雜的代碼塊提取成更小、更易于管理的方法來(lái)實(shí)現(xiàn)的。要使用這種技術(shù),我們首先需要找到一個(gè)復(fù)雜的特定任務(wù)的代碼塊。然后我們提取其中的代碼并將其放入一個(gè)新的方法中。此外,請(qǐng)確保為該方法指定一個(gè)有意義的名稱。

示例:

重構(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;}

你看,我們把循環(huán)中計(jì)算商品總價(jià)格的代碼提出成了一個(gè)單獨(dú)的函數(shù),第一個(gè)函數(shù)是不是變得簡(jiǎn)單而且易讀了呢。

技術(shù)2:用符號(hào)常量替代數(shù)字

這個(gè)技巧是為了編寫更干凈、可讀性更強(qiáng)的代碼。魔幻數(shù)是指硬編碼的數(shù)值。寫硬編碼的數(shù)字會(huì)引起其他人的困惑,因?yàn)樗鼈兊哪康臎](méi)有定義。將硬編碼的值轉(zhuǎn)換為具有有意義名稱的變量肯定會(huì)幫助其他人理解它。此外,您可以添加注釋以進(jì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}
技術(shù)3:合并重復(fù)的代碼

重復(fù)或相同的代碼可能出現(xiàn)在不同位置的代碼中。這個(gè)代碼不需要完全相同,但它可以執(zhí)行類似的任務(wù),或者從原始代碼進(jìn)一步擴(kuò)展。重復(fù)的代碼可能會(huì)導(dǎo)致幾個(gè)問(wèn)題:包括增加維護(hù)成本、難以更改代碼庫(kù)以及引入錯(cuò)誤的更高風(fēng)險(xiǎn)。在重構(gòu)代碼時(shí),您必須注意重復(fù)的代碼。當(dāng)找到這樣的代碼時(shí),一種處理方法是將這樣的代碼轉(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;}

在前面的代碼示例中,我們進(jìn)行求和,然后再次求平均值。重構(gòu)后,我們將其替換為為兩者提供和的函數(shù)。

結(jié)論

對(duì)于任何想要提高代碼質(zhì)量、性能和可維護(hù)性的開(kāi)發(fā)人員來(lái)說(shuō),重構(gòu)都是必不可少的實(shí)踐。通過(guò)花時(shí)間分析和優(yōu)化代碼,您可以消除冗余,降低復(fù)雜性,并創(chuàng)建一個(gè)更高效、可擴(kuò)展的應(yīng)用程序。通過(guò)不斷審查和改進(jìn)代碼,您可以創(chuàng)建一個(gè)更健壯、更有彈性的應(yīng)用程序。我希望本文能幫助您理解一些重構(gòu)技術(shù)。

關(guān)鍵詞:

相關(guān)新聞

Copyright 2015-2020   三好網(wǎng)  版權(quán)所有 聯(lián)系郵箱:435 22 [email protected]  備案號(hào): 京ICP備2022022245號(hào)-21