你的代码优化了吗?分享一波七个优化代码的小技巧

新手也能写复杂爬虫!AI+Python自动分析京东商品,提取数据不用F12 不用F12:AI自动分析京东页面,生成选择器;不用懂JS:Playwright自动渲染动态数据;不用改代码:只需配置3个参数,复制运行就能出结果。这套方案不仅适用于京东,修改提示词后还能爬取淘宝、拼多多、亚马逊等电商网站,新手只需掌握“配置参数→运行代码→查看CSV”3步,就能轻松获取任意网站的结构化数据。未来,AI会让爬虫彻底进入“零代码、零门槛”时代,新手也能轻松搞定复杂数据爬取需求。 阅读详情

01 提炼函数(适当抽取小函数)

1.1 定义

提炼函数就是将一段代码放进一个独立函数中,并让函数名称解释该函数用途。

一个过于冗长的函数或者一段需要注释才能让人理解用途的代码,可以考虑把它切分成一个功能明确的函数单元,并定义清晰简短的函数名,这样会让代码变得更加优雅。

1.2 优化例子

(1)提炼函数之前

    private String name;
    private Vector<Order> orders = new Vector<Order>();
    public void printOwing() {
        //print banner
        System.out.println("****************");
        System.out.println("*****customer Owes *****");
        System.out.println("****************");
        //calculate totalAmount
        Enumeration env = orders.elements();
        double totalAmount = 0.0;
        while (env.hasMoreElements()) {
            Order order = (Order) env.nextElement();
            totalAmount += order.getAmout();
        }
        //print details
        System.out.println("name:" + name);
        System.out.println("amount:" + totalAmount);
    }

(2)提炼函数之后

以上那段代码,可以抽成print banner,calculate totalAmount,print details三个功能的单一函数,如下:

    private String name;
    private Vector<Order> orders = new Vector<Order>();
    public void printOwing() {
        
        //print banner
        printBanner();
        //calculate totalAmount
        double totalAmount = getTotalAmount();
        //print details
        printDetail(totalAmount);
    }
    void printBanner(){
        System.out.println("****************");
        System.out.println("*****customer Owes *****");
        System.out.println("****************");
    }
    double getTotalAmount(){
        Enumeration env = orders.elements();
        double totalAmount = 0.0;
        while (env.hasMoreElements()) {
            Order order = (Order) env.nextElement();
            totalAmount += order.getAmout();
        }
        return totalAmount;
    }
    void printDetail(double totalAmount){
        System.out.println("name:" + name);
        System.out.println("amount:" + totalAmount);
    }

02 内联函数(适当去除多余函数)

2.1 定义

内联函数就是在函数调用点插入函数本体,然后移除该函数。

上一小节介绍了提炼函数代码优化方式,以简短清晰的小函数为荣。但是呢,小函数是不是越多越好呢?肯定不是啦,有时候你会遇到某些函数,其内部代码和函数名称同样清晰,这时候呢你可以考虑内联函数优化一下了。

2.2 优化例子

(1)内联函数之前

    int getRating(){
        return moreThanFiveDeliveries() ? 2 : 1;
    }
    boolean moreThanFiveDeliveries(){
        return numberOfLateDeliveries >5;
    }

(2)内联函数之后

  int getRating(){
        return numberOfLateDeliveries >5 ? 2 : 1;
 }

03 内联临时变量(去除多余临时变量)

3.1 定义

内联临时变量将所有对该变量的引用动作,替换为对它赋值的那个表达式自身。

3.2 优化例子

(1)内联临时变量之前

double basePice = anOrder.basePrice();
return basePice >888;

(2)内联临时变量之后

 return anOrder.basePrice() >888;

04 引入解释性变量

4.1 定义

引入解释性变量 就是将该复杂表达式(或其中一部分)的结果放进一个临时变量,以此变量名称来解释表达式用途。

有些表达式可能非常复杂难于阅读,在这种情况下,临时变量可以帮助你将表达式分解为可读的形式。

在比较复杂的条件逻辑中,你可以用引入解释性变量将每个条件子句提炼出来,以一个良好命名的临时变量来解释对应条件子句的意义。

4.2 优化例子

(1)引入解释性变量之前

if ((platform.toUpperCase().indexOf("mac") > -1) &&
    (brower.toUpperCase().indexOf("ie") > -1) &&
    wasInitializes() && resize > 0) {
        ......
    }

(2)引入解释性变量之后

final boolean isMacOS = platform.toUpperCase().indexOf("mac") > -1;
final boolean isIEBrowser = brower.toUpperCase().indexOf("ie") > -1;
final boolean wasResized = resize > 0;
if (isMacOS && isIEBrowser && wasInitializes() && wasResized) {
    ......
}

05 以字面常量取代魔法数

5.1 定义

创造一个常量,根据其意义为它命名,并将上述的字面数值替换为这个常量。

所谓魔法数是指拥有特殊意义,却又不能明确表现出这种意义的数字。如果你需要在不同的地点引用同一个逻辑数,每当该数字要修改时,会特别头疼,因为很可能会改漏。而字面常量取代魔法数可以解决这个头疼问题。

5.2 优化例子

(1)以字面常量取代魔法数之前

double getDiscountPrice(double price){
       return price * 0.88;
 }

(2)以字面常量取代魔法数之后

 static final double DISCOUNT_CONSTANT=0.88;
 
 double getDiscountPrice(double price){
     return price * DISCOUNT_CONSTANT;
 }

06 用多态替代switch语句

6.1 定义

用多态替换switch语句 就是利用Java面向对象的多态特点,使用state模式来替换switch语句。

6.2 优化例子

(1)用多态替换switch语句之前

 int getArea() {
        switch (shape){
        case SHAPE.CIRCLE:
        return 3.14 * _r * _r; break;
        case SHAPE.RECTANGEL;
        return width *,heigth;
        }
    }

(2)用多态替换switch语句之后

 class Shape {
        int getArea(){};
    }
    class Circle extends Shape {
        int getArea() {
            return 3.14 * r * r; 
        }
    }
    class Rectangel extends Shape {
        int getArea() {
            return width * heigth;
        }
    }

07 将过多的参数对象化

7.1 定义

将过多的参数对象化就是把涉及过多参数封装成一个对象传参。

一个方法有太多传参时,即难以阅读又难于维护。尤其针对dubbo远程调用这些方法,如果有过多参数,增加或者减少一个参数,都要修改接口,真的坑。如果把这些参数封装成一个对象,就很好维护了,不用修改接口。

7.2 优化例子

(1)将过多的参数对象化之前:

public int register(String username,String password,Integer age,String phone);

(2)将过多的参数对象化之后:

 public int register(RegisterForm from );
 
 class RegisterForm{
     private String username;
     private String password;
     private Integer age;
     private String phone;
 }
 
TEA-Tiny Encryption算法在FPGA的实现 在FPGA原型中,我们定义了一个TEA_FPGA模块,该模块包含一个输入数据端口(plain)、一个输入密钥端口(key)和一个输出数据端口(cipher)。在模块中,我们通过32轮的循环处理来实现TEA算法的加密过程,并将最终结果存储在cipher变量中。由于FPGA硬件的高速性能,这种基于HDL的TEA算法实现可以在短时间内完成大量的数据加密处理,从而提高加密效率和性能。总之,在FPGA中实现TEA算法可以大大提高加密效率和性能,通过使用硬件描述语言HDL来实现可以更高效、更快速地完成数据加密操作。 阅读详情

相关推荐

vue 获取el-table多选的选中行

<el-table :data='tableData' ref="multipleTable" v-loading='loading' border max-height='700' style='width: 100%' size="mini"> <el-table-column type="selection" width="55"></el-table-column> <el-table-column label

且听风吟的博客 6649

使用函数指针优化重复代码

使用函数指针优化重复代码

Lontern的博客 346

告别反复格式化!用Ventoy制作2025年终极启动盘,Windows/Linux/macOS一网打尽

本文详细介绍了如何使用Ventoy制作2025年终极多系统启动盘,彻底告别反复格式化U盘的烦恼。Ventoy通过创新的引导加载器架构,允许用户在一个U盘内同时存放并直接启动Windows、Linux、macOS等多种系统镜像和WePE等维护工具,实现真正的非破坏性管理和极高的U盘利用率。文章涵盖从安装配置、镜像库构建到安全启动设置等全流程实战指南。

weixin_29280219的博客 244

代码优化和过度优化

工作几年你就会发现一年又一年,代码你会更嫌弃之前写的,这大概就是你感觉你自己优化自己,或者你觉得别人写的代码你会有强迫症的想要改的舒服点(代码洁癖)。 那么代码优化是每个码农该有的素养,久而久之,每个人都会有自己的代码风格,关键代码是大家读的舒服,读的懂才是好代码,那今天简单说说代码优化。 有人说,有很多人说,代码优化是一把双刃剑。 有时候为了优化或者在错误的原因下优化你的代码,可能会造成错误的方向和结果。 现实工作当中,我们是为了生产一个可用能用的软件,而不是漂亮的代码。而整理代码是件..

weixin_39082432的博客 518

【Vite+Vue3+TS】基于Vite+Vue3+TypeScript+ESLint+Prettier+Stylelint搭建项目(亲测超详细)

结合了很多项目和文章,总结一篇项目构建的笔记。 温馨提示:文章末尾记录了我在搭建项目过程中,遇到的一些问题和解决办法 ~

aDiaoYa_的博客 4234

用Simulink复现Hopf振荡器:从数学公式到稳定极限环的保姆级仿真教程

本文详细介绍了如何在Simulink中实现Hopf振荡器,从数学原理到仿真建模的全过程。通过参数调试和波形分析,帮助读者掌握Hopf振荡器的核心特性及其在机器人控制等领域的应用。特别强调了自适应调节技巧,提升系统稳定性和鲁棒性。

weixin_29261711的博客 446

写出漂亮代码的45个小技巧

比如在项目中不同的类型的业务可能需要上传各种各样的附件,此时就可以定义好不同的一个附件的枚举,来区分不同业务的附件。不要在代码中直接写死,不定义枚举,代码阅读起来非常困难,直接看到数字都是懵逼的。。

Huangjiazhen711的博客 2486

老N卡福音:GT1030/GTX1050在MacOS Ventura 13.2上的完整驱动指南(附实测截图)

本文详细介绍了如何在MacOS Ventura 13.2上通过OCLP工具链驱动GT1030和GTX1050等老款NVIDIA显卡,涵盖硬件兼容性验证、BIOS设置、OpenCore配置、驱动安装及性能测试全流程。实测数据显示,这些基于Pascal和Maxwell架构的显卡在当代MacOS系统中仍能发挥实用价值,为老N卡用户提供完整解决方案。

weixin_30832143的博客 634

谈谈自己对代码优化的理解

干程序猿这行已经快三年了,从啥都不会到现在能独立写功能,经历了不少,今天谈下自己对代码优化的理解。 1.比较简单也是比较熟知的:像字符串拼接,用StringBuffer/StringBuilder之类的,用的多了基本也都知道了。 2.多考虑代码的复用,写模块的时候,多考虑下代码的复用,有不少代码在多个地方可用时,写在公用的类里面或者写个工具类。 3.在一个业务逻辑里面,一条数据只查一次,多个

qq_24842293的博客 1100

web渗透--9--识别web应用框架

1、概述 Web框架指纹识别是信息收集过程中的一个重要任务。获悉目标框架的类型必然为测试人员带来极大的优势,如果该框架在之前就被测试过。测试人员不仅可以获得未修补版本中存在的漏洞,还可以了解此框架中特有的错误配置以及已知的文件结构。从而使指纹识别过程显得格外重要。

武天旭的博客 5101

GD32F130之USART多机通信

简介 在多机通信中,一个从机应该只接收它需要接收的数据,且只应该在它需要接收数据时才检测串口。而始终接收RX线上的数据对从机来说是一种负担。 多机通信硬件设计 远距离方案:RS485 板级方案: 静默模式 静默模式有什么作用? 答:如果 USART 处于静默模式,所有的接收状态标志位将不会被置位。 如何进入静默模式? 答:软件可以通过将 USART_CMD 寄存器中MMCMD 位置 1 使 USART 进入静默模式。 如何从静默模式中唤醒? 答:有两种方式可选,①检测到总线

luliplus的博客 302

学习重构-重新组织函数

1. Extract Method(提炼函数) 将代码段放进一个独立函数中,并让函数名称解释该函数的用途。 示例: void printOwing(double amount){ printBanner(); //print details System.out.println("name: " + _name); System.out.pr...

qq_39581763的博客 322

CARAFE轻量级上采样算子详解:从原理到YOLOv5/YOLOv8实战魔改全攻略

摘要: 本文探讨了CARAFE(内容感知特征重组)上采样算子在YOLOv5/YOLOv8目标检测模型中的应用。传统上采样方法(如最近邻插值)易丢失细节信息,而CARAFE通过内容自适应机制和大感受野特性,动态生成上采样核,显著提升小目标检测性能。文章详细解析了CARAFE的算法原理(核生成与特征重组两步),并提供了在YOLOv5/YOLOv8中集成的代码实现与配置修改方案。实验表明,引入CARAFE后模型mAP提升约0.6%,且保持轻量级优势。此外,文中还总结了训练调优技巧、部署优化方案及常见问题解决方法,

FJN110的博客 920

stringbuffer有限制吗_你的代码优化了吗?分享一波七个优化代码的小技巧

*2019 BAT必备——JVM面试必问(附答案)*我说精通字符串,面试官竟然问我Java中的String有没有长度限制?*国内Java面试总是问StringBuffer?档次为什么这么低?*字节跳动的面试难吗?我该如何应对?01 提炼函数(适当抽取小函数)1.1 定义提炼函数就是将一段代码放进一个独立函数中,并让函数名称解释该函数用途。一个过于冗长的函数或者一段需要注释才能让人理解用途的代码,可...

weixin_31981135的博客 229

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

聊聊Java中代码优化的30个小技巧

我之前写过两篇关于优化相关的问题《聊聊sql优化的15个小技巧》和《聊聊接口性能优化的11个小技巧》,发表之后,在全网受到广大网友的好评。今天接着优化这个话题,我们一起聊聊Java中代码优化的30个小技巧,希望会对你有所帮助。不知道你在实际的项目开发中,有没有使用过固定值?}thrownewBusinessException("该用户不存在");}其中1000L和该用户不存在是固定值,每次都是一样的。既然是固定值,我们为什么不把它们定义成静态常量呢?}使用关键字修饰静态常量,表示静态。...

4337

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

聊聊我们Java中代码优化的30个小技巧

不知道你在实际的项目开发中,有没有使用过固定值?}thrownewBusinessException("该用户不存在");}其中1000L和该用户不存在是固定值,每次都是一样的。既然是固定值,我们为什么不把它们定义成静态常量呢?这样语义上更直观,方便统一管理和维护,更方便代码复用。...}privatestaticfinalStringNOT_FOUND_MESSAGE="该用户不存在";...}使用关键字修饰静态常量,static表示静态的意思,即类变量,而表示。......

LoveSummer 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

JAVA中如何实现代码优化(技巧讲解)

博主传送门:

退役复学在校大学生,目光所至,皆为华夏 6万+

提高效率的Java代码优化小技巧

可以提高效率的Java代码优化小技巧 前言 代码优化 ,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。 代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的...

Mr_chen的博客 583

PHP代码优化的小技巧分享

PHP优化的目的是花最少的代价换来最快的运行速度与最容易维护的代码。给大家提供下面这些优化技巧: 1.echo比print快。 2.使用echo的多重参数代替字符串连接。 3.在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替。 4.对global变量,应该用完就unset()掉。 5.用单引号代替双引号来包含字符串,这样...

dongkui8623的博客 98

【代码优化】有了这45个小技巧,再也不怕代码写得烂了!!

比如在项目中不同的类型的业务可能需要上传各种各样的附件,此时就可以定义好不同的一个附件的枚举,来区分不同业务的附件。不要在代码中直接写死,不定义枚举,代码阅读起来非常困难,直接看到数字都是懵逼的。。

wufaqidong1的博客 6466

php代码优化以及开发中的小技巧(持续补充)

一、前言       这篇文章是博主平时记的小笔记,记录的是平时开发没有注意到的细节,或者在写代码的时候可以优化的部分。有相当一部分bug都是开发中不够严谨造成的,所以大家共勉。提升代码质量,快乐撸码! 二、正文 1、 代码的公用部分尽量不要改动,除非是所有的项目都需要添加某些新功能 2、 对于自定义的数组,对象等不同文件,要按照已有的文...

铁柱的博客 3188

嵌入式C编程的代码优化小技巧

常用代码优化的方法 优化永远是追求一种平衡,而不是走极端。 1.合理使用RAM和ROM 对于51内核的8位单片机: data:固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。 idata:固定指前面0x00-0xff的256个RAM,其中前128和data的128完全相同,只是因为访问的方式不同。idata是用类似C中的指针方式访问的。汇编中的语句...

qq_38978328的博客 1870

Unity 优化小技巧-代码篇

没有什么特殊的方法,有的只是小细节,写给自己,也送给大家。

JingDuiTell的博客 1774

优雅写代码的45个小技巧

比如在项目中不同的类型的业务可能需要上传各种各样的附件,此时就可以定义好不同的一个附件的枚举,来区分不同业务的附件。不要在代码中直接写死,不定义枚举,代码阅读起来非常困难,直接看到数字都是懵逼的。。

LoveSummer 2万+

代码优化其实很简单

说到代码优化,很多人上来就是各种理论、架构、核心思路;其实优化这个事情说简单也简单,说复杂也可以很复杂,但是我觉得最重要的就是要有一个良好的编码习惯,代码"屎山”并非一朝一夕形成的,往往是经过了日积月累;因此,培养一个好的习惯,可以让我们的代码变的更加优雅、易维护,系统变的更加健壮;下面就分享14个小技巧,让优化变成顺手就...

weixin_31978735的博客 200
上一篇: MySQL:为什么查询列表中多了它,GROUP BY语句就会报错呢?
下一篇: 搞清楚Spring Cloud的这4个点,轻松应对面试官!
加班不秃顶
博客等级 码龄7年 1822粉丝 599原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值