重构-函数

本文介绍了重构函数的9种方法,包括提炼函数、内联函数、内联临时变量、函数代替临时变量等,旨在提升代码可读性和减少bug。基础方法注重将逻辑代码封装并命名,进阶方法则关注变量优化。通过实例解析,帮助开发者掌握重构技巧,提高代码质量。
摘要由CSDN通过智能技术生成

本篇主要介绍9种方法对函数进行重构,包括以下几个方面:

函数:

  • 1 入参
  • 2 临时变量
  • 3 算法
  • 4 结构
  • 5 注释
  • 6 返回值

方法:

  • 1 提炼函数
  • 2 内联函数
  • 3 内联临时变量
  • 4 函数代替临时变量
  • 5 引入解释性变量
  • 6 重复使用临时变量
  • 7 禁止参数赋值
  • 8 对象代替变量
  • 9 替换算法

基础

基础方法强调将具有独立逻辑的代码封装到一个函数,并给函数起一个能表达其功能的名字。目的很简单,就是为了去掉“注释”。

1. 提炼函数

主要是针对那些函数体包含太多逻辑代码,可以考虑将其中具备一定独立逻辑的代码提炼成一个函数。这样做的好处是:(1)一个适当的函数名字可以省略一段注释,(2) 越小规格的分解,越容易将来被复用。

示例:

    public int increaseSalary(Person person){
        if( person.score > 90) {
            person.salary += 1000;
        } else {
            person.salary += 500;
        }

        /**
         * Print person information
         */
        System.out.println("Person name: " + person.name);
        System.out.println("Person age: " + person.age);
        System.out.println("Person position: " + person.position);
        System.out.println("Person salary: " + person.salary);
    }

好的代码应该一目了然,如果通过函数名就能知道它的作用,那为什么还要加注释呢?!

    public int increaseSalary(Person person){
        if( person.score > 90) {
            person.salary += 1000;
        } else {
            person.salary += 500;
        }

        printPersonInfo(person);
    }

    private void printPersonInfo(Person person){
        System.out.println("Person name: " + person.name);
        System.out.println("Person age: " + person.age);
        System.out.println("Person position: " + person.position);
        System.out.println("Person salary: " + person.salary);
    }

提炼函数适用度极高。在项目初期,在需求驱动下,很少有人能顾忌到代码结构,很容易将一大坨逻辑塞到一个函数下,使得函数变得很臃肿。其中逻辑很难一眼看清楚,难免存在很多bug。在代码review的时候࿰

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: 重构printf函数的目的是为了实现串口打印输出功能。在重定义printf函数之前,需要在代码中添加头文件和函数声明。首先,添加头文件"stdarg.h"并在main函数下方添加printf函数的声明。然后,在代码中添加宏定义,根据使用的编译器选择相应的宏定义。如果使用的是GCC编译器,则定义宏__io_putchar(int ch),否则定义宏fputc(int ch, FILE *f)。这些宏定义的作用是告诉编译器使用哪个函数来实现输出功能。最后,实现重构后的printf函数,通过HAL_UART_Transmit函数将字符发送到串口。这样就完成了printf函数重构。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [STM32—printf函数重定义](https://blog.csdn.net/u014470361/article/details/79203273)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [STM32 重构printf函数](https://blog.csdn.net/qq_20999867/article/details/100076134)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值