世界讯息:三个实用重构技术,改进你的代码
时间:2023-06-27 19:29:03来源:Go学堂

大家好,我是渔夫子。

代码重构是在不改变外部功能的情况下对现有代码进行改进。它是编程的核心部分之一,不容忽视。否则,您就无法获得更好的代码版本。代码重构可以增强代码的可读性、可维护性和可扩展性。它还旨在提高性能和开发人员的工作效率。今天,我们将探讨一些可以帮助您更好地重构代码的技巧。

如何重构

在寻找重构的技术之前,让我们看看如何将代码重构集成到编码过程中。以下建议可用于此目的:


(资料图片仅供参考)

专门为重构代码分配时间。将较大的重构问题分解为较小的问题进行管理。试着让整个团队参与重构过程。使用可以帮助您查找常见重构错误的自动化工具。

现在,让我们从用于重构的技术开始。

技术1:提取方法

此方法包括将代码块转换为单独的方法/函数。这样做是为了改进代码的结构和可读性。它是通过将长而复杂的代码块提取成更小、更易于管理的方法来实现的。要使用这种技术,我们首先需要找到一个复杂的特定任务的代码块。然后我们提取其中的代码并将其放入一个新的方法中。此外,请确保为该方法指定一个有意义的名称。

示例:

重构前:

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

重构后:

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

你看,我们把循环中计算商品总价格的代码提出成了一个单独的函数,第一个函数是不是变得简单而且易读了呢。

技术2:用符号常量替代数字

这个技巧是为了编写更干净、可读性更强的代码。魔幻数是指硬编码的数值。写硬编码的数字会引起其他人的困惑,因为它们的目的没有定义。将硬编码的值转换为具有有意义名称的变量肯定会帮助其他人理解它。此外,您可以添加注释以进行进一步解释。它还可以帮助调试并降低将来出现错误的风险。

示例:

重构前:

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

重构后:

const int FREEZING_POINT = 32;if (temperature > FREEZING_POINT) {    // Do something if temperature is above freezing}
技术3:合并重复的代码

重复或相同的代码可能出现在不同位置的代码中。这个代码不需要完全相同,但它可以执行类似的任务,或者从原始代码进一步扩展。重复的代码可能会导致几个问题:包括增加维护成本、难以更改代码库以及引入错误的更高风险。在重构代码时,您必须注意重复的代码。当找到这样的代码时,一种处理方法是将这样的代码转换为单个可重用的函数/方法。

示例:

重构前

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

重构后:

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

在前面的代码示例中,我们进行求和,然后再次求平均值。重构后,我们将其替换为为两者提供和的函数。

结论

对于任何想要提高代码质量、性能和可维护性的开发人员来说,重构都是必不可少的实践。通过花时间分析和优化代码,您可以消除冗余,降低复杂性,并创建一个更高效、可扩展的应用程序。通过不断审查和改进代码,您可以创建一个更健壮、更有弹性的应用程序。我希望本文能帮助您理解一些重构技术。

标签:

生活指南
  • 山东省胶州市九龙街道:让传统文化在“城市进阶”中焕发生机-全球球精选

    “俺最喜欢听的茂腔,在家门口就能听,唱的真地道!”在山东省胶州市九

  • 档案管理系统指的是什么? 档案管理系统的结构和功能分别怎么样?

    档案管理系统指的是什么?档案管理系统是指为满足利用者需要而建立的

  • 成都五幼与小班新生家长美好“相遇”,携手共育花开! 快播

    为了帮助新生家长进一步了解幼儿园的办园理念及课程建设,加强幼儿园与

  • 【聚看点】vivo X90s 评测:新芯片 + 新配色 + 新色彩,夏日里的新个性表达

    月26日,预热许久的vivoX90s新机正式发布,作为vivoX系列的迭代机型,X

  • 视点!世界互联网大会数字文明尼山对话开幕式举行

    海报新闻记者满倩倩丛萍李义芳孙靓邢德蕊夏岩松济宁报道6月26日上午,

  • 打破刚兑什么意思?打破刚兑是否合理?|天天最新

    打破刚兑什么意思?打破刚性兑付是针对金融机构的刚性兑付来说的,金

  • 热文:“千万工程”调研行丨浙江丽水:美丽乡村入画来

    瓯江畔的大港头村。受访者供图山是“浙江之巅”,水是“六江之源”。近

  • 超千亿解禁潮来袭,下周4股解禁超百亿

    扬子晚报网6月25日讯(记者范晓林)下周(6月26日至30日)将有115只个股

  • 全球今亮点!《逆水寒》探索宗门姑墨老兵服宗门探索姑墨完成攻略

    《逆水寒》老兵服宗门探索姑墨完成攻略本次的逍遥探索只有5点逍遥探索

  • 微动态丨新华全媒+丨“数实融合”为长三角中小企业高质量发展开辟新天地

    最新出台的《上海市推动制造业高质量发展三年行动计划(2023-2025年)

  • α-烯基磺酸钠商品报价动态(2023-06-24)|当前简讯

    交易商品牌 产地交货地最新报价α-烯基磺酸钠 工业级,白色粉末东营市

  • 返程小心风雨!深圳全市雷电预警,北方酷热南方雨雨雨,欢迎小伙伴来广东避暑……_每日消息

    今天是端午假期最后一天经历了假期第一天的烈日当空第二天的雷电阵雨今

  • “九头鸟”文旅创意 评选再次启动 最高奖励10万元_全球视讯

    “九头鸟”文旅创意评选再次启动最高奖励10万元---楚天都市报极目新闻

  • 天天热资讯!陵水最便宜的房价,香水国色对比碧海一家·名城房价哪个便宜?

    陵水最便宜的房价,香水国色对比碧海一家·名城房价哪个便宜?海南陵水

  • 当前热文:如何才能好好爱自己?女性保养大全,让你更自信!

    如何才能好好爱自己?这是一个非常重要的问题,尤其是对于女性来说。女

  • 比亚迪s9上市时间_比亚迪S9多少钱 全球球精选

    问题:想问问大家,比亚迪S9多少钱?现在的车款式很多,但是不知道比亚

  • 民生
    • 毕业租房能有多坑?咬牙租了3k的房,蟑螂上桌吃我的外卖...-每日快播

    • 聚焦:山东3地寻人涉疫人员轨迹公布 山东3市发布紧急寻人公告

    • 中国造EDA再迎突破 华大九天联手合见工软打造国产EDA生态

    • 爱心助老出行调研显示:接送孩子、菜场、医院,是老年人三大需求场景 全球即时看