每个软件开发人员都应该知道的 22 个有效的 ChatGPT 提示


我们精选了超过 22 个经过测试和验证的提示,这些提示是每个软件开发人员必备的。准备好通过这些强大的提示来增强您的编码技能并释放您的创造潜力。

无论您是经验丰富的专业人士还是刚刚开始编程之旅,这些提示都会激发您的想象力并帮助您轻松解决复杂问题。

1.错误识别:

  • 检测以下 JavaScript 代码段中的任何潜在错误:[代码片段]。
  • 检查提供的 JavaScript 代码并提出改进建议以避免 [错误类型]:[代码片段]。
  • 发现后续 JavaScript 代码中的任何内存泄漏并提出更正建议:[代码片段]。

2.自动代码生成:

  • 为名为 [name] 的构造自动生成一个 JavaScript [类/模块/组件] 模板,提供以下功能:[功能描述]。
  • 构建一个 JavaScript 函数,使用给定的输入处理 [数据结构] 上的 [操作]:[输入变量] 并生成:[输出描述]。
  • 为 [domain] 应用程序自动创建一个 JavaScript 类,合并 [methods list] 的方法和属性 [properties list]。
  • 给定 [设计模式],编写一个 JavaScript 代码段来展示它在 [用例] 中的使用情况。

示例:自动为名为“购物车”的购物车模块生成样板 JavaScript 代码,该模块具有以下功能:
用于初始化空数组以保存购物车项目的构造函数。
- 名为“add Item”的函数接受一个项目对象并将其附加到购物车。
- 一个名为“delete Item”的函数,它接受一个项目对象并在找到时将其从购物车中删除。
- 名为“view Items”的函数返回购物车中的项目数组。
- 一个名为“calculate Total”的函数,用于计算和返回购物车中所有商品的总成本。


3.代码评估:

  • 评估以下 JavaScript 代码以获得行业最佳实践并提出改进建议:[代码片段]。
  • 仔细检查给定的 JavaScript 代码是否符合 [编码风格指南]:[代码片段]。
  • 检查以下 JavaScript 代码以正确处理错误并推荐增强功能:[代码片段]。
  • 评估所提供的 JavaScript 代码的可扩展性和可持续性:[代码片段]。

4. API文档生成:

  • 为后续的 JavaScript 代码生成 API 文档:[代码片段]。
  • 为提供的 JavaScript 类创建一个简洁的 API 参考:[代码片段]。
  • 为以下 JavaScript API 生成使用实例:[代码片段]。


5.代码编译:

  • 在 JavaScript 中,完成以下用 [值] 建立一个 [数据结构] 的代码片段: [代码片段]。
  • 封装根据给定输入参数计算 [所需输出] 的 JavaScript 函数:[函数签名]。
  • 完成 JavaScript 代码以使用 [参数] 向 [API 端点] 发出 API 请求并管理响应:[代码片段]。

6.查询增强:

  • 改进以下 SQL 查询以提高性能:[SQL 查询]。
  • 检查提供的 SQL 查询是否存在任何可能的性能问题:[SQL 查询]。
  • 推荐后续SQL查询的索引策略:【SQL查询】。
  • 优化以下 NoSQL 查询以改进性能和资源管理:[NoSQL 查询]。

示例:改进以下 SQL 查询以提高性能:

SELECT  * 
FROM orders 
WHERE order_date BETWEEN  '2023–01–01'  AND  '2023–12–31' 
ORDER  BY order_date DESC
 LIMIT 100 ;

7. 界面设计:

  • 为 [网络/移动] 应用程序创建 UI 草图,重点放在 [用户目标或任务] 上。
  • 对 [应用程序或网站] 的现有用户界面提出增强建议,以提高 [可用性、可访问性或美感]。
  • 为 [web/mobile] 应用程序设计响应式用户界面,以适应不同的屏幕尺寸和方向。

示例:为侧重于管理个人财务的移动应用程序创建 UI 草图。

function  adjustUI ( ) { 
  // 获取屏幕宽度和高度
  var screenWidth = window . 内宽;
  变种屏幕高度=窗口。内部高度;

 
// 检查屏幕是纵向模式还是横向模式
  var isPortrait = screenHeight > screenWidth; 

 
// 根据屏幕大小和方向调整 UI 元素
  if (isPortrait) { 
   
// 调整纵向模式
   
// 例如,重新排列和调整元素大小以适应垂直方向
   
// 如有必要,显示/隐藏某些元素
  } else {
   
// 对横向模式进行调整
   
// 例如,重新排列和调整元素大小以适合水平
   
// 如有必要,显示/隐藏某些元素
  } 


// 最初调用 adjustUI 函数
adjustUI (); 

// 为屏幕尺寸/方向变化添加事件侦听器
window . addEventListener ( 'resize' , adjustUI);

8. 自动检查:

  • 根据输入参数和预期输出为以下 JavaScript 函数制定测试用例:[函数签名]。
  • 为给定的 JavaScript 代码开发一个测试脚本,涵盖 [单元/集成/系统] 测试:[代码片段]。
  • 为以下测试不同边缘情况的 JavaScript 函数创建测试数据:[函数签名]。
  • 为 [网络/移动] 应用程序设计测试策略,包括 [单元、集成、系统和/或性能] 测试。

9. 代码重构:

  • 为以下 JavaScript 代码提出重构增强功能,以提高可读性和可维护性:[代码片段]。
  • 确定在给定的 JavaScript 代码中应用 [设计模式] 的机会:[代码片段]。
  • 优化以下 JavaScript 代码以提高性能:[代码片段]。

示例:优化以下 JavaScript 代码以提高性能:

function divide(a, b) {
  if (b === 0) {
    throw new Error('Division by zero');
  }
  return a / b;
}

9.代码重构:

  • 建议对以下JavaScript代码进行重构改进,以提高可读性和可维护性:[代码片段]。
  • 找出在给定的JavaScript代码中应用[设计模式]的机会:[代码片段]。
  • 优化以下JavaScript代码以提高性能:[代码片段]。

10.模式建议:

  • 根据所提供的JavaScript代码,建议一个适当的设计模式来加强其结构:[代码片段]。
  • 找出在以下JavaScript代码库中应用[设计模式]的机会:[资源库URL或代码库描述]。
  • 为所提供的JavaScript代码建议一个替代的设计模式,它可以提供额外的优势:[代码片段]。

例子:根据提供的JavaScript代码,建议一个适当的设计模式来加强其结构:

class TotalPriceCalculator {
  calculateTotal(items) {}
}

class RegularTotalPriceCalculator extends TotalPriceCalculator {
  calculateTotal(items) {
    let total = 0;
    for (let item of items) {
      total += item.price * item.quantity;
    }
    return total;
  }
}

class DiscountedTotalPriceCalculator extends TotalPriceCalculator {
  calculateTotal(items) {
    let total = 0;
    for (let item of items) {
      total += item.price * item.quantity * 0.9; // apply 10% discount
    }
    return total;
  }
}

class Order {
  constructor(items, totalPriceCalculator) {
    this.items = items;
    this.totalPriceCalculator = totalPriceCalculator;
  }

  calculateTotal() {
    return this.totalPriceCalculator.calculateTotal(this.items);
  }
}

class Item {
  constructor(name, price, quantity) {
    this.name = name;
    this.price = price;
    this.quantity = quantity;
  }
}

11.算法创建:
问题描述:假设你有一个整数的列表,你需要从这个列表中找出最大值。

(1)最佳的解决方案:
为了有效地解决这个问题,你可以使用JavaScript中内置的Math.max函数。它接受多个参数并返回其中的最大值。下面是一个示例代码:

const numbers = [4, 9, 2, 6, 5];
const max = Math.max(...numbers);
console.log(max); // 输出:9

这个解决方案利用了JavaScript引擎提供的Math.max的优化实现,确保了高性能。

(2)针对特定用例的增强:
如果你需要从一个按升序排序的大整数列表中找到最大值,你可以进一步优化算法。由于该列表是排序的,你可以直接访问最后一个元素来获得最大值。下面是增强后的代码:

const numbers = [1, 3, 5, 7, 9, ...]; // 排序的数组
const max = numbers[numbers.length - 1];
console.log(max);
// 输出:9

这一改进避免了不必要的迭代,并提供了一个O(1)的恒定时间复杂度。

(3)处理大规模数据或高通量的算法:
如果你正在处理一个大规模的数据集,并且需要找到最大值,你可以考虑使用JavaScript中的reduce方法进行并行处理。这可以通过利用多个CPU核心来实现高效计算。下面是一个示例代码:

const numbers = [4, 9, 2, 6, 5, ...]; // 大规模的数据集
const max = numbers.reduce(( accumulator, currentValue) => Math.max( accumulator, currentValue), Number.MIN_SAFE_INTEGER);
console.log(max);

这种算法将数据集分割成较小的块,并行处理它们,然后将结果结合起来,找到最大值。它通过有效利用可用的计算资源来提高性能。

(4)算法的并行/分布式版本:
为了进一步提高性能,你可以考虑采用并行或分布式计算方法,如使用Web Workers或Apache Hadoop等分布式计算框架。这些技术能够在多个线程或分布式系统中并发执行。下面是一个平行版本的伪代码例子:

// Parallel version using Web Workers
const numbers = [4, 9, 2, 6, 5, ...];
// Large-scale dataset
const numWorkers = 4;
// Number of worker threads
const chunkSize = Math.ceil(numbers.length / numWorkers);
const workers = [];

for (let i = 0; i < numWorkers; i++) {
    const start = i * chunkSize;
    const end = start + chunkSize;
    const worker = new Worker('worker.js');
// Worker script for finding the max value
    worker.postMessage(numbers.slice(start, end));
    workers.push(worker);
}

let max = Number.MIN_SAFE_INTEGER;

for (const worker of workers) {
    worker.onmessage = (event) => {
        max = Math.max(max, event.data);
    };
}

// Merge the results from workers and obtain the final maximum value
console.log(max);

这个伪代码演示了一种使用Web Worker的并行方法,数据集被分成几块,由多个工作线程并发处理。然后将结果合并,以找到最大值。你可以实现工作者脚本(worker.js)来处理每个块的最大值计算。

12.代码翻译:

  • 将给定的[源语言]代码翻译成JavaScript:[代码片段]。
  • 将提供的[源语言]类或模块转换为JavaScript,同时保持其功能和结构:[代码片段]。
  • 将提供的使用[库或框架]的[源语言]代码迁移到使用类似库或框架的JavaScript:[代码片段]。

13.个性化学习:
根据我目前的技能水平:[初级/中级/高级],汇集一份学习[编程语言或技术]的资源清单。

function recommendLearningPathway(domain, backgroundSkills) {
    // Define a map of learning pathways for different programming domains
    const pathwayMap = {
        webdevelopment: {
            frontend: {
                beginner: [
                    'HTML',
                    'CSS',
                    'JavaScript'
                ],
                intermediate: [
                    'React',
                    'CSS frameworks (e.g., Bootstrap)',
                    'API integration'
                ],
                advanced: [
                    'Advanced JavaScript concepts (e.g., closures, promises)',
                    'Performance optimization',
                    'Progressive Web Apps'
                ]
            },
            backend: {
                beginner: [
                    'Basic server-side programming (e.g., Node.js, PHP)',
                    'Database fundamentals',
                    'API development'
                ],
                intermediate: [
                    'Express.js',
                    'Database management systems (e.g., MySQL, MongoDB)',
                    'Authentication and authorization'
                ],
                advanced: [
                    'Scalability and load balancing',
                    'Microservices architecture',
                    'Security and best practices'
                ]
            }
        },
       
// Add more programming domains and their associated learning pathways
    };

   
// Retrieve the recommended learning pathway based on the given domain and background skills
    const pathway = pathwayMap[domain.toLowerCase()][backgroundSkills.toLowerCase()];

   
// Return the recommended learning pathway
    return pathway;
}

考虑到我的[现有技能或经验]背景,推荐一个学习途径来掌握[特定的编程领域或技术]。

function recommendLearningPathway(domain, backgroundSkills) {
    // Define a map of learning pathways for different programming domains
    const pathwayMap = {
        webdevelopment: {
            frontend: {
                beginner: [
                    'HTML',
                    'CSS',
                    'JavaScript'
                ],
                intermediate: [
                    'React',
                    'CSS frameworks (e.g., Bootstrap)',
                    'API integration'
                ],
                advanced: [
                    'Advanced JavaScript concepts (e.g., closures, promises)',
                    'Performance optimization',
                    'Progressive Web Apps'
                ]
            },
            backend: {
                beginner: [
                    'Basic server-side programming (e.g., Node.js, PHP)',
                    'Database fundamentals',
                    'API development'
                ],
                intermediate: [
                    'Express.js',
                    'Database management systems (e.g., MySQL, MongoDB)',
                    'Authentication and authorization'
                ],
                advanced: [
                    'Scalability and load balancing',
                    'Microservices architecture',
                    'Security and best practices'
                ]
            }
        },
       
// Add more programming domains and their associated learning pathways
    };

   
// Retrieve the recommended learning pathway based on the given domain and background skills
    const pathway = pathwayMap[domain.toLowerCase()][backgroundSkills.toLowerCase()];

   
// Return the recommended learning pathway
    return pathway;
}

建议项目想法或编码练习练习和提高我在[编程语言或技术]方面的技能。

function suggestProjectsOrExercises(languageOrTechnology) {
    // Define a map of project ideas or coding exercises for different programming languages or technologies
    const projectMap = {
        javascript: [
            'Build a TODO app with vanilla JavaScript',
            'Create a weather application using an API',
            'Implement a quiz game'
        ],
        python: [
            'Develop a web scraper',
            'Build a chatbot using a natural language processing library',
            'Create a data visualization tool'
        ],
       
// Add more project ideas or coding exercises for other programming languages or technologies
    };

   
// Retrieve the suggested projects or exercises based on the given language or technology
    const projectsOrExercises = projectMap[languageOrTechnology.toLowerCase()];

   
// Return the suggested projects or exercises
    return projectsOrExercises;
}

// Example usage:
const skillLevel = 'intermediate';
const programmingLanguage = 'javascript';
const learningResources = getResourcesBySkillLevel(skillLevel, programmingLanguage);
console.log('Learning Resources:');
console.log(learningResources);

const domain = 'webdevelopment';
const backgroundSkills = 'frontend';
const learningPathway = recommendLearningPathway(domain, backgroundSkills);
console.log('Recommended Learning Pathway:');
console.log(learningPathway);

const languageOrTechnology = 'python';
const suggestedProjectsOrExercises = suggestProjectsOrExercises(languageOrTechnology);
console.log('Suggested Projects or Exercises:');
console.log(suggestedProjectsOrExercises);

14.代码可视化:

  • 为下面的JavaScript代码生成一个UML图:[代码片段]。
  • 为提供的JavaScript算法创建一个流程图或可视化表示:[算法或伪代码]。
  • 将所提供的JavaScript代码的调用图或依赖关系可视化:[代码片段]。

例子:为下面的JavaScript代码生成一个UML图:

class Vehicle {
    constructor(model) {
        this.model = model;
    }
    
    getModel() {
        return this.model;
    }
    
    start() {}
    
    stop() {}
}

class Car extends Vehicle {
    constructor(model) {
        super(model);
    }
    
    start() {
        console.log("Starting car engine");
    }
    
    stop() {
        console.log(
"Stopping car engine");
    }
}

class Motorcycle extends Vehicle {
    constructor(model) {
        super(model);
    }
    
    start() {
        console.log(
"Starting motorcycle engine");
    }
    
    stop() {
        console.log(
"Stopping motorcycle engine");
    }
}

15.数据可视化:
生成一个表示以下数据的柱状图:[数据或数据集描述]。

// Bar Chart Data
var data = [10, 20, 30, 15, 25];

// Bar Chart
var svg = d3.select(
"body")
  .append(
"svg")
  .attr(
"width", 400)
  .attr(
"height", 300);

var xScale = d3.scaleBand()
  .domain(d3.range(data.length))
  .range([0, 400])
  .padding(0.2);

var yScale = d3.scaleLinear()
  .domain([0, d3.max(data)])
  .range([0, 300]);

svg.selectAll(
"rect")
  .data(data)
  .enter()
  .append(
"rect")
  .attr(
"x", function(d, i) { return xScale(i); })
  .attr(
"y", function(d) { return 300 - yScale(d); })
  .attr(
"width", xScale.bandwidth())
  .attr(
"height", function(d) { return yScale(d); })
  .attr(
"fill", "steelblue");

创建一个折线图,将以下时间序列数据的趋势可视化:[数据或数据集描述]。

// Line Chart Data
var data = [
  { year: 2015, value: 10 },
  { year: 2016, value: 15 },
  { year: 2017, value: 20 },
  { year: 2018, value: 25 },
  { year: 2019, value: 30 }
];

// Line Chart
var svg = d3.select(
"body")
  .append(
"svg")
  .attr(
"width", 400)
  .attr(
"height", 300);

var xScale = d3.scaleLinear()
  .domain([2015, 2019])
  .range([0, 400]);

var yScale = d3.scaleLinear()
  .domain([0, d3.max(data, function(d) { return d.value; })])
  .range([300, 0]);

var line = d3.line()
  .x(function(d) { return xScale(d.year); })
  .y(function(d) { return yScale(d.value); });

svg.append(
"path")
  .datum(data)
  .attr(
"d", line)
  .attr(
"fill", "none")
  .attr(
"stroke", "steelblue")
  .attr(
"stroke-width", 2);

设计一个热图,表示下列变量之间的相关性:[变量列表]。

// Heatmap Data
var data = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];

// Heatmap
var svg = d3.select(
"body")
  .append(
"svg")
  .attr(
"width", 400)
  .attr(
"height", 300);

var colorScale = d3.scaleLinear()
  .domain([1, 9])
  .range([
"white", "steelblue"]);

svg.selectAll(
"rect")
  .data(data)
  .enter()
  .append(
"rect")
  .attr(
"x", function(d, i) { return i * 50; })
  .attr(
"y", function(d, i) { return i * 50; })
  .attr(
"width", 50)
  .attr(
"height", 50)
  .attr(
"fill", function(d) { return colorScale(d); });


16.代码审查:

  • 评估所提供的JavaScript代码中与[性能、安全或编码惯例]有关的潜在问题:[代码片断]。
  • 对以下JavaScript类/模块进行代码审查,重点关注[质量、可维护性或设计原则]:[代码片断]。
  • 检查所提供的JavaScript代码,以了解与[模块化、可扩展性或可读性]有关的潜在改进:[代码片断]。

17.寻觅错误:

  • 在提供的JavaScript代码中寻找潜在的错误或问题:[代码片段]。
  • 诊断以下场景中描述的bug的根本原因,并建议在JavaScript中进行修复:[bug场景或错误信息]。
  • 识别所提供的JavaScript代码中与[安全或数据完整性]有关的潜在漏洞:[代码片段]。

例子:诊断以下场景中描述的错误的根本原因,并建议在JavaScript中进行修复:

// Scenario: The following code is supposed to add the numbers from 1 to n inclusively, but it returns incorrect results.
function addNumbers(n) {
  let sum = 0;
  for (let i = 1; i <= n; i++) {
    sum += i;
  }
  return sum;
}

console.log(addNumbers(5));
// Expected output: 15


18.机器学习算法:

  • 用一个例子解释[机器学习算法]的工作。
  • 提出一个机器学习方法来解决以下问题:[问题陈述]。
  • 对所提供的机器学习模型提出改进建议,以提高[准确性、性能或概括性]:[模型描述]。


19.软件工程原则:

  • 用JavaScript代码中的例子解释[软件工程原则或概念]。
  • 讨论在具体环境中应用[软件工程原则或概念]的优缺点:[语境或情况]。

例子:用JavaScript代码中的例子解释单一责任原则(SRP)。

// Example: User Authentication

// Class responsible for user authentication
class UserAuthenticator {
  constructor() {
    this.authService = new AuthService();
    this.databaseService = new DatabaseService();
  }

  login(username, password) {
    if (this.authService.authenticate(username, password)) {
      const user = this.databaseService.getUser(username);
      this.authService.setLoggedInUser(user);
      return true;
    } else {
      return false;
    }
  }

  logout() {
    this.authService.setLoggedInUser(null);
  }
}

// Class responsible for authentication-related operations
class AuthService {
  authenticate(username, password) {
   
// Perform authentication logic, e.g., checking username and password against a database
   
// Return true if authentication succeeds, false otherwise
  }

  setLoggedInUser(user) {
   
// Store the logged-in user information in a session or local storage
  }
}

// Class responsible for database-related operations
class DatabaseService {
  getUser(username) {
   
// Retrieve user information from a database based on the provided username
   
// Return the user object
  }
}

20.编程中的伦理:
讨论在开发[软件、算法或应用程序]时潜在的道德考虑。
探讨程序员在确保[应用领域或环境]的[隐私、公平或责任]方面的作用。

21.数据库操作:
写一个SQL查询,在给定的数据库上执行以下操作:[操作描述]。
解释如何在MongoDB中执行【数据库操作或任务】。
讨论在[具体用例或要求]的背景下,SQL和NoSQL数据库的区别。

例子:编写一个SQL查询,在 "订单 "表中找到订单总额最高的前10位客户。

SELECT customer_id, SUM(order_amount) AS total_order_amount
FROM orders
GROUP BY customer_id
ORDER BY total_order_amount DESC
LIMIT 10;

22.网络安全:
描述如何保护网络应用免遭[特定类型的攻击或漏洞]。
讨论[安全概念或实践]在[应用或基础设施]方面的重要性。

例子:描述如何保护一个网络应用程序免受SQL注入攻击。

下面是一个在JavaScript中使用参数化查询与准备语句和输入验证的例子:

let username = req.body.username;
let password = req.body.password;

// Input validation
if (username && password) {
 
// Database connection
  let conn = new mysqli(servername, dbusername, dbpassword, dbname);
  if (conn.connect_error) {
    throw new Error(
"Connection failed: " + conn.connect_error);
  }

 
// Prepared statement
  let stmt = conn.prepare(
"SELECT * FROM users WHERE username = ? AND password = ?");
  stmt.bind_param(
"ss", username, password);
  stmt.execute();

 
// Handle the results...
} else {
 
// Handle validation errors or display appropriate messages to the user.
}

结论
拥有一个经过测试的提示集合对每个软件开发人员来说都是非常宝贵的。这些提示提供了练习编码的机会,完善了解决问题的技能,并探索了不同的编程概念。通过研究这22个测试过的提示并学习附带的例子,你可以提高你的能力,成为一个更熟练的软件开发者。记住要带着好奇心对待每一个提示,接受挑战,并享受用代码解决问题的过程。