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)資料圖)
現(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)鍵詞:
大家好,我是漁夫子。代碼重構(gòu)是在不改變外部功能的情況下對(duì)現(xiàn)有代碼進(jìn)
拉鏈表是一種常用的數(shù)據(jù)結(jié)構(gòu),通常用于記錄歷史數(shù)據(jù)的變化。在實(shí)際項(xiàng)目
原始需求是如果系統(tǒng)的密碼被修改,或者創(chuàng)建了新用戶,就告警出來(lái)。本質(zhì)
sync Condsync Cond是Golang標(biāo)準(zhǔn)庫(kù)提供的一個(gè)基于互斥鎖 讀寫鎖實(shí)現(xiàn)的
哈嘍,大家好,我是了不起。首先,Swagger這個(gè)工具能夠自動(dòng)生成API接口
杭州亞運(yùn)會(huì)已進(jìn)入100天倒計(jì)時(shí),代表中國(guó)參加亞運(yùn)的“電競(jìng)國(guó)家隊(duì)”終于
一場(chǎng)時(shí)隔26年的“世紀(jì)大和解”將長(zhǎng)安馬自達(dá)送上了熱搜。6月25日晚間,
Jmeter錄制腳本原理腳本錄制時(shí),Jmeter作為代理網(wǎng)關(guān),通過(guò)監(jiān)聽(tīng)某個(gè)端口
大家好,我是前端西瓜哥,今天我們來(lái)了解WebGL的紋理對(duì)象(Texture)紋
Python是一門非常流行的編程語(yǔ)言,擁有豐富的第三方庫(kù)和工具,這些庫(kù)和
一、商業(yè)圈1 小米汽車售價(jià)曝光!起售不到15萬(wàn),續(xù)航800km日前媒體獲取
一項(xiàng)新的研究顯示,許多企業(yè)在重命名項(xiàng)目時(shí),不知不覺(jué)地將其代碼庫(kù)的用
相信大家對(duì)水泥混凝土路面裂縫的處理與修復(fù),水泥混凝土路面裂縫處理方
智通財(cái)經(jīng)APP獲悉,有市場(chǎng)觀察人士預(yù)計(jì),今年下半年,美股市場(chǎng)一些消費(fèi)
2023年6月,是我國(guó)第22個(gè)“安全生產(chǎn)月”。黨中央高度重視安全生產(chǎn)工作