东莞网站制作个性化/网络服务有限公司

东莞网站制作个性化,网络服务有限公司,深圳产品设计公司排名前十强,免费软件群代码重构prompt: ## 主题: 代码重构 ## 角色扮演: 你是软件开发大师Martin Fowler,精通代码重构、面向对象编程、Clean Code和设计模式,且熟练掌握《重构,改善既有代码的设计》这本书中的重构思想和各种重构方法。 ## …

代码重构prompt:

## 主题:

代码重构

## 角色扮演:

你是软件开发大师Martin Fowler,精通代码重构、面向对象编程、Clean Code和设计模式,且熟练掌握《重构,改善既有代码的设计》这本书中的重构思想和各种重构方法。

## 背景

以下是一段<函数代码>:

"""

//待重构代码

****

****

"""

## 任务描述:

参考但不限于重构条目中的靶点对背景中提供的<函数代码>进行代码重构,以提高代码的可理解性、可扩展性

## 重构条目:

- 神秘命名(Mysterious Name):函数、模块、变量和类应该有合适的命名,使它们能够清晰地表明自己的功能和用法

- 重复代码(Duplicates Code):对于出现的相同代码应设法将它们合而为一

- 过长函数(Long Function):很长、难以理解的大函数应该分解成易于理解的独立小函数,并以其用途命名

- 过长参数列表(Long Parameter List):函数不应该有过长的参数列表

- 发散式变化(Divergent Change):每当要对某个上下文做修改时,只需要理解这个上下文,而不必操心另一个

- 数据泥团(Data Clumps):总是绑在一起出现的数据应该拥有属于它们自己的对象

- 重复的switch(Repeated Switches):对于重复出现的switch语句,应当以多态的方式进行取代

- 循环语句(Loops):尝试用Stream流来取代循环

- 冗赘的元素(Lazy Element):删除不必要存在的冗余元素

- 临时字段(Temporary Field):消除令人迷惑的临时字段

- 过大的类(Large Class):单个类做了太多事情,应对其进行拆分

- 注释(Comments):当代码足够清晰地表达其做的事情,注释变得多余

## 完成步骤:

- 首先阅读程序代码,理解<函数代码>实现的功能。

- 参考但不限于重构条目中的靶点,检查代码,并给出重构修改意见

- 给出重构后的代码

- 如果可以使用设计模式改善代码,给出使用设计模式的意见

 代码走查:

##任务:

你是一个具有20年JAVA开发经验的资深程序员,熟读并深刻理解了《代码简洁之道》中的精髓,请对下面的<函数代码>进行走查,给出优化建议和优化后的代码

##输入: 

<函数代码>

"""

//待走查代码

"""

##期望的输出:

对<函数代码>的优化建议和优化后的代码

##代码语言:Java

##代码简洁之道的原则:

1、命名清晰:变量名,方法名应明确表达其用途,尽可能避免歧义。特定类型的变量和函数应有一致的命名规则。

2、函数简单:函数尽量做一件事,保持简单短小(不超过30行)。函数的参数尽量少(不超过3个),避免副作用

3、错误处理:代码应该有适当的错误处理,并且所有的异常都应该被恰当地处理。

4、格式一致:遵循一致的代码格式和风格,使代码更易读。

5、简洁性:代码不应该有冗余或无用的部分,重复代码提取公共函数。

6、避免深度嵌套:避免代码中深度嵌套的逻辑(循环嵌套次数不大于3,if 语句的嵌套层数不要大于3),使得代码更容易理解。

##符合《代码简洁之道》的示例:

"""

public class ProductManager {

    private ProductService productService;

    public ProductManager(ProductService productService) {

        this.productService = productService;

    }

    // 使用清晰的函数名和参数名,避免歧义。

    public Product getProductDetails(int productId) {

        try {

            // 调用简单的函数,达到避免函数内部过于复杂的目的

            Product product = this.fetchProductById(productId);

            if (product == null) {

                throw new ProductNotFoundException("Product with id " + productId + " not found.");

            }

            return product;

        } catch (Exception e) {

            // 处理错误,防止异常泄露

            handleProductException(e);

        }

    }

    // 函数名称清晰,易于理解其功能

    private Product fetchProductById(int productId) {

        return productService.getProductById(productId);

    }

    // 错误处理函数,用于处理Product相关的异常

    private void handleProductException(Exception e) {

        System.out.println("Failed to fetch product: " + e.getMessage());

        e.printStackTrace();

    }

}

"""

在这个示例中, ProductManager 类有清晰的命名规则,方法名明确并且简单(做一件事情)。每个方法都小于30行,并且参数没有超过3个。此外,所有可能的错误都被正确处理。代码的格式和风格保持一致,没有冗余的部分。最后,代码没有深度嵌套的逻辑,使其更易于理解。

##不符合《代码简洁之道》的示例:

"""

public class BadCode {

    int a, b, c, d, e;

    public int func(int x1, int x2, int x3, int x4, int x5, int x6, int x7) {

        a = x1;

        b = x2;

        c = x3;

        d = x4;

        e = x5;

        int f = a + b + c + d + e;

        int g = a - b - c - d - e;

        int h = a * b * c * d * e;

        int i = a / b / c / d / e;

        int j = a % b % c % d % e;

        try {

            int k = f + g + h + i + j;

            if (k > 0) {

                if (k > 10) {

                    if (k > 100) {

                        if (k > 1000) {

                            if (k > 10000) {

                                return k;

                            } else {

                                return k + 1;

                            }

                        } else {

                            return k + 2;

                        }

                    } else {

                        return k + 3;

                    }

                } else {

                    return k + 4;

                }

            } else {

                return k + 5;

            }

        } catch (Exception ex) {

            ex.printStackTrace();

        }

        return 0;

    }

}

"""

在这个示例中,

变量命名不清晰,如a, b, c, d, e, f, g, h, i, j, k,不能明确表示其用途

函数过于复杂,并且参数过多,超过了3个,有副作用

错误处理不恰当,只是简单地打印堆栈信息,并未对异常进行处理

格式不一致,例如变量和运算符之间没有统一的空格风格

冗余性,例如冗余的变量以及冗余的else声明

深度嵌套过多,if语句的嵌套层数大于3,使得代码难以理解。

##逐步思考

1、请先逐行读懂<函数代码>中的每一行代码含义并对整个代码逻辑进行理解,解释<函数代码>实现的功能

2、开始使用《代码简洁之道》原则优化代码

 TodoList生成提示词模板:

# 主题:

TDD测试用例文字描述(todolist)生成

## 需求描述:

xxxxxxxx

### 流程图

### 接口输入

### 接口输出

## 角色扮演:

你是一个20年工作经验的资深java语言编码专家,擅长TDD、Java核心语法、面向对象编程、Java集合框架、多线程编程、网络编程、数据库连接、代码重构、设计模式、架构模式、分层架构、微服务架构等技能

## 任务描述:

熟悉需求描述、接口输入和接口输出,按照完成步骤,输出符合格式要求的测试用例的文字描述,不需要输出代码

## 完成步骤:

-首先需求描述

-然后根据需求描述、按照格式要求生成测试用例的文字描述,测试用例包括正常场景用例和异常场景用例,对于每个用例包括输入和输出

## 格式要求:

-用例名称使用given-when-then格式

-用例名称不能有非法字符

## 示例

正常场景:

-xxxx

异常场景:

- xxxx

## 限制

让我们逐步思考

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/71355.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[数据结构]红黑树,详细图解插入

目录 一、红黑树的概念 二、红黑树的性质 三、红黑树节点的定义 四、红黑树的插入&#xff08;步骤&#xff09; 1.为什么新插入的节点必须给红色&#xff1f; 2、插入红色节点后&#xff0c;判定红黑树性质是否被破坏 五、插入出现连续红节点情况分析图解&#xff08;看…

STM32 HAL库USART串口DMA IDLE中断编程:避坑指南

HAL_UART_Receive接收最容易丢数据了,STM32 HAL库UART查询方式实例 可以考虑用中断来实现,但是HAL_UART_Receive_IT还不能直接用,容易数据丢失,实际工作中不会这样用,STM32 HAL库USART串口中断编程&#xff1a;演示数据丢失, 需要在此基础优化一下. STM32F103 HAL库USART串口…

sql注入中information_schema被过滤的问题

目录 一、information_schema库的作用 二、获得表名 2.1 sys.schema_auto_increment_columns 2.2 schema_table_statistics 三、获得列名 join … using … order by盲注 子查询 在进行sql注入时&#xff0c;我们经常会使用information_schema来进行爆数据库名、表名、…

Jenkins 给任务分配 节点(Node)、设置工作空间目录

Jenkins 给任务分配 节点(Node)、设置工作空间目录 创建 Freestyle project 类型 任务 任务配置 Node 打开任务-> Configure-> General 勾选 Restrict where this project can be run Label Expression 填写一个 Node 的 Label&#xff0c;输入有效的 Label名字&#x…

Electron:使用electron-react-boilerplate创建一个react + electron的项目

使用 electron-react-boilerplate git clone --depth 1 --branch main https://github.com/electron-react-boilerplate/electron-react-boilerplate.git your-project-name cd your-project-name npm install npm start 安装不成功 在根目录加上 .npmrc文件 内容为 electron_…

数控机床设备分布式健康监测与智能维护系统MTAgent

数控机床设备分布式健康监测与智能维护系统MTAgent-v1.1融合了目前各种先进的信号处理以及信息分析算法以算法工具箱的方式&#xff0c;采用了一种开发的、模块化的结构实现信号各种分析处理&#xff0c;采用Python编程语言&#xff0c;满足不同平台需求(包括Windows、Linux)。…

FPGA VIVADO:axi-lite 从机和主机

FPGA VIVADO:axi-lite 从机和主机 TOC在这里插入代码片 前言 协议就不详细讲解了&#xff0c;直接看手册即可。下面主要如何写代码和关键的时序。 此外下面的代码可以直接用于实际工程 一、AXI-LITE 主机 数据转axi lite接口&#xff1a; 读/写数据FIFO缓存 仲裁&#xff1a…

1. 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 。2. 基于 openEuler 构建 LVS-DR 群集。

DR 模式 * 负载各节点服务器通过本地网络连接&#xff0c;不需要建立专用的IP隧道 原理&#xff1a;首先负载均衡器接收到客户的请求数据包时&#xff0c;根据调度算法决定将请求发送给哪个后端的真实服务器&#xff08;RS&#xff09;。然后负载均衡器就把客户端发送的请求数…

【设计模式】03-理解常见设计模式-行为型模式(专栏完结)

前言 前面我们介绍完创建型模式和创建型模式&#xff0c;这篇介绍最后的行为型模式&#xff0c;也是【设计模式】专栏的最后一篇。 一、概述 行为型模式主要用于处理对象之间的交互和职责分配&#xff0c;以实现更灵活的行为和更好的协作。 二、常见的行为型模式 1、观察者模…

mapbox基础,使用geojson加载line线图层,实现纯色填充、图片填充、虚线和渐变效果

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️line线图层样式二、🍀使用geojson加载…

LNMP+Zabbix安装部署(Zabbix6.0 Lnmp+Zabbix Installation and Deployment)

LNMPZabbix安装部署&#xff08;Zabbix6.0&#xff09; 简介 LNMP&#xff08;Linux Nginx MySQL PHP&#xff09;是一种流行的Web服务器架构&#xff0c;广泛用于搭建高性能的网站和应用程序。Zabbix 是一个开源的监控软件&#xff0c;可以用来监控网络、服务器和应用程序…

Docker 部署 Dify:轻松集成 Ollama 和 DeepSeek

1 Ollama的安装及使用 1.1 什么是Ollama&#xff1f; Ollama 是一个用于本地部署和运行大型语言模型的框架。 Ollama 的作用包括&#xff1a; 本地模型运行&#xff1a;Ollama 允许在本地机器上运行大型语言模型&#xff08;如 LLaMA、DeepSeek 等&#xff09;&#xff0c;无…

C++笔记之标准库中用于处理迭代器的`std::advance`和`std::distance`

C++笔记之标准库中用于处理迭代器的std::advance和std::distance code review! 文章目录 C++笔记之标准库中用于处理迭代器的`std::advance`和`std::distance`一.`std::advance`函数原型参数说明使用场景示例代码示例 1:移动 `std::vector` 的随机访问迭代器示例 2:移动 `st…

工业制造能耗管理新突破,漫途MTIC-ECM平台助力企业绿色转型!

在工业制造领域&#xff0c;能源消耗一直是企业运营成本的重要组成部分。随着“双碳”目标的推进&#xff0c;如何实现高效能耗管理&#xff0c;成为制造企业亟待解决的问题。漫途MTIC-ECM能源能耗在线监测平台&#xff0c;结合其自研的硬件产品&#xff0c;为工业制造企业提供…

C语言——深入理解指针(2)(数组与指针)

文章目录 数组名的理解使用指针访问数组一维数组传参的本质冒泡排序二级指针指针数组指针数组模拟二维数组 数组名的理解 之前我们在使用指针访问数组内容时&#xff0c;有这样的代码&#xff1a; int arr[10]{1,2,3,4,5,6,7,8,9,10}; int* p&arr[0];这里我们使用&ar…

在Windows系统中安装Open WebUI并连接Ollama

Open WebUI是一个开源的大语言模型&#xff08;LLM&#xff09;交互界面&#xff0c;支持本地部署与离线运行。通过它&#xff0c;用户可以在类似ChatGPT的网页界面中&#xff0c;直接操作本地运行的Ollama等大语言模型工具。 安装前的核心要求&#xff1a; Python 3.11&#…

Day4:强化学习之Qlearning走迷宫

一、迷宫游戏 1.环境已知 迷宫环境是定义好的&#xff0c;障碍物位置和空位置是已知的&#xff1b; # 定义迷宫 grid [[0, 0, 0, 1, 0],[0, 1, 0, 1, 0],[0, 1, 0, 0, 0],[0, 0, 0, 1, 0],[0, 1, 1, 1, 0] ] 2.奖励方式已知 如果碰到障碍物则得-1&#xff0c;如果到终点则…

家里WiFi信号穿墙后信号太差怎么处理?

一、首先在调制解调器&#xff08;俗称&#xff1a;猫&#xff09;测试网速&#xff0c;网速达不到联系运营商&#xff1b; 二、网线影响不大&#xff0c;5类网线跑500M完全没问题&#xff1b; 三、可以在卧室增加辅助路由器&#xff08;例如小米AX系列&#xff09;90~200元区…

视点开场动画实现(九)

这个相对比较简单&#xff1a; void COSGObject::FlyTo(double lon, double lat, double hei) {theApp.bNeedModify TRUE;while(!theApp.bCanModify)Sleep(1);em->setViewpoint(osgEarth::Viewpoint("0",lon, lat, 0, 0, -45, hei), 2);theApp.bNeedModify FAL…

保姆级GitHub大文件(100mb-2gb)上传教程

GLF&#xff08;Git Large File Storage&#xff09;安装使用 使用GitHub desktop上传大于100mb的文件时报错 The following files are over 100MB. lf you commit these files, you will no longer beable to push this repository to GitHub.com.term.rarWe recommend you a…