亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

3個(gè)Go語(yǔ)言中實(shí)用重構(gòu)技術(shù)分享

 更新時(shí)間:2023年06月25日 08:24:28   作者:Go學(xué)堂  
代碼重構(gòu)是在不改變外部功能的情況下對(duì)現(xiàn)有代碼進(jìn)行改進(jìn),是編程的核心部分之一,本文為大家介紹了Go語(yǔ)言中3個(gè)實(shí)用重構(gòu)技術(shù),需要的可以參考一下

代碼重構(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ò)程中。以下建議可用于此目的:

  • 專門為重構(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è)技巧是為了編寫(xiě)更干凈、可讀性更強(qiáng)的代碼。魔幻數(shù)是指硬編碼的數(shù)值。寫(xiě)硬編碼的數(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)于3個(gè)Go語(yǔ)言中實(shí)用重構(gòu)技術(shù)分享的文章就介紹到這了,更多相關(guān)Go重構(gòu)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go排序算法通用qsort函數(shù)使用示例

    Go排序算法通用qsort函數(shù)使用示例

    這篇文章主要為大家介紹了Go排序算法通用qsort函數(shù)使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • Go語(yǔ)言map不支持并發(fā)寫(xiě)操作的原因

    Go語(yǔ)言map不支持并發(fā)寫(xiě)操作的原因

    Go語(yǔ)言為什么不支持并發(fā)讀寫(xiě)map?,Go官方的說(shuō)法是在多數(shù)情況下map只存在并發(fā)讀操作,如果原生支持并發(fā)讀寫(xiě),即降低了并發(fā)讀操作的性能,在使用?map?時(shí),要特別注意是否存在對(duì)?map?的并發(fā)寫(xiě)操作,如果存在,要結(jié)合?sync?包的互斥鎖一起使用,
    2024-01-01
  • Go語(yǔ)言實(shí)現(xiàn)百萬(wàn)級(jí)WebSocket連接架構(gòu)設(shè)計(jì)及服務(wù)優(yōu)化

    Go語(yǔ)言實(shí)現(xiàn)百萬(wàn)級(jí)WebSocket連接架構(gòu)設(shè)計(jì)及服務(wù)優(yōu)化

    本文將詳細(xì)介紹如何在Go中構(gòu)建一個(gè)能夠支持百萬(wàn)級(jí)WebSocket連接的服務(wù),包括系統(tǒng)架構(gòu)設(shè)計(jì)、性能優(yōu)化策略以及具體的實(shí)現(xiàn)步驟和代碼示例
    2024-01-01
  • Go中函數(shù)的使用細(xì)節(jié)與注意事項(xiàng)詳解

    Go中函數(shù)的使用細(xì)節(jié)與注意事項(xiàng)詳解

    在Go語(yǔ)言中函數(shù)可是一等的(first-class)公民,函數(shù)類型也是一等的數(shù)據(jù)類型,下面這篇文章主要給大家介紹了關(guān)于Go中函數(shù)的使用細(xì)節(jié)與注意事項(xiàng)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • 一文帶你掌握掌握 Golang結(jié)構(gòu)體與方法

    一文帶你掌握掌握 Golang結(jié)構(gòu)體與方法

    在 Golang 中,結(jié)構(gòu)體和方法是實(shí)現(xiàn)面向?qū)ο缶幊痰闹匾M成部分,也是 Golang 的核心概念之一。在本篇文章中,我們將深入介紹 Golang 結(jié)構(gòu)體與方法的概念、使用方法以及相關(guān)的編程技巧和最佳實(shí)踐
    2023-04-04
  • GO語(yǔ)io包的常用接口

    GO語(yǔ)io包的常用接口

    這篇文章主要介紹了GO語(yǔ)io包的常用接口,分析了GO語(yǔ)言接口的概念與功能,并實(shí)例列舉了幾個(gè)最常用的接口的用法,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-12-12
  • Golang標(biāo)準(zhǔn)庫(kù)syscall詳解(什么是系統(tǒng)調(diào)用)

    Golang標(biāo)準(zhǔn)庫(kù)syscall詳解(什么是系統(tǒng)調(diào)用)

    最近在研究go語(yǔ)言,發(fā)現(xiàn)go語(yǔ)言系統(tǒng)調(diào)用源碼只有調(diào)用函數(shù)的定義,今天通過(guò)本文給大家分享Golang標(biāo)準(zhǔn)庫(kù)syscall詳解及什么是系統(tǒng)調(diào)用,感興趣的朋友一起看看吧
    2021-05-05
  • Go語(yǔ)言中字符串賦值中的問(wèn)題與解決方法

    Go語(yǔ)言中字符串賦值中的問(wèn)題與解決方法

    這篇文章主要為大家詳細(xì)介紹了Go語(yǔ)言中字符串賦值會(huì)出現(xiàn)的一些問(wèn)題以及解決方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下
    2024-12-12
  • golang替換無(wú)法顯示的特殊字符(\u0000,?\000,?^@)

    golang替換無(wú)法顯示的特殊字符(\u0000,?\000,?^@)

    這篇文章主要介紹了golang替換無(wú)法顯示的特殊字符,包括的字符有\(zhòng)u0000,?\000,?^@等,下文詳細(xì)資料,需要的小伙伴可以參考一下
    2022-04-04
  • Go單元測(cè)試對(duì)數(shù)據(jù)庫(kù)CRUD進(jìn)行Mock測(cè)試

    Go單元測(cè)試對(duì)數(shù)據(jù)庫(kù)CRUD進(jìn)行Mock測(cè)試

    這篇文章主要為大家介紹了Go單元測(cè)試對(duì)數(shù)據(jù)庫(kù)CRUD進(jìn)行Mock測(cè)試的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06

最新評(píng)論