人工智能辅助软件开发:全面指南与实用提示(第2/3部分)

A cute robot codes his little software project. Image by Midjourney.
A cute robot codes his little software project. Image by Midjourney.

这是三篇系列文章中的第二篇,每一篇都详细介绍了如何正确地将人工智能集成到您的工作流程中,以处理与软件开发特定过程相关的事务。

这个系列的概述如下:

  • 部分1:打下基础 - 项目规划,设计和建筑
  • 部分2:与AI一起构建 —— 代码生成、数据库设计和文档
  • 第三部分:打磨和维护 - 测试、优化和版本控制

为了确保您不会错过未来的帖子,请务必关注。

部分2:与人工智能一起构建 — 代码生成,数据库设计和文档

欢迎来到这个关于人工智能辅助软件开发系列的第二部分。在这篇文章中,我们将探讨人工智能如何能够加速您的编码过程,帮助设计高效的数据库,甚至在创建全面文档方面提供帮助。我将提供实用的提示和技巧,让您在软件开发的关键环节中充分利用人工智能。

掌握AI辅助代码生成

到目前为止,我们已经计划了我们的项目,设计了我们的架构。现在是主要活动的时候:实际编写一些代码!

为代码生成设计有效的提示

在21世纪学习编程可能是最好的选择!从你的人工智能助手得到优秀代码的关键在于如何传达你的请求。我已经学会了(有时是通过困难的方式),模糊的提示会导致模糊的代码。这是我请求代码时常用的模板:

I need to implement [specific functionality] in [programming language].
Key requirements:
1. [Requirement 1]
2. [Requirement 2]
3. [Requirement 3]
Please consider:
- Error handling
- Edge cases
- Performance optimization
- Best practices for [language/framework]
Please do not unnecessarily remove any comments or code.
Generate the code with clear comments explaining the logic.

这种有组织的方法帮助AI准确理解您的需求,并考虑到您可能忽略提及的重要方面。

审阅和理解人工智能生成的代码

现在,这里有一个至关重要的观点:绝对不要盲目地将由人工智能生成的代码复制粘贴到您的项目中。我在初期犯了这个错误,花了数小时来调试问题,其实只要仔细审查就能发现。

当您收到来自人工智能的代码时,请按照以下步骤操作:

  1. 阅读整个代码片段:对结构和方法有一个整体的了解。
  2. 检查逻辑错误:人工智能可能会误解某项要求或做出错误的假设。
  3. 寻找最佳实践:确保代码遵循您所使用语言和项目的约定。
  4. 验证错误处理:确保边缘情况和潜在错误得到适当处理。
  5. 了解每一行:如果有什么你不明白的地方,可以问AI解释一下。

以下是我用来获取解释的提示:

Can you explain the following part of the code in detail:
[paste code section]
Specifically:
1. What is the purpose of this section?
2. How does it work step-by-step?
3. Are there any potential issues or limitations with this approach?

利用人工智能进行代码审查和改进

在编码中,我最喜欢使用人工智能的方式之一是进行代码审查。这就像有一位不知疲倦的高级开发人员在旁边帮你审查代码,找出你可能忽略的问题,并提出改进建议。

尝试使用此提示进行代码审查:

Please review the following code:
[paste your code]
Consider:
1. Code quality and adherence to best practices
2. Potential bugs or edge cases
3. Performance optimizations
4. Readability and maintainability
5. Any security concerns
Suggest improvements and explain your reasoning for each suggestion.

我发现人工智能经常会发现我忽略的细微问题,特别是当我盯着代码看太久时。

不同编码任务的提示思路

为了帮助您开始使用AI辅助编码,下面是一些常见任务的提示点子:

  • 实现特定算法:
Implement a [name of algorithm] in [programming language]. 
Please include:
1. The main function with clear parameter and return types
2. Helper functions if necessary
3. Time and space complexity analysis
4. Example usage
  • 创建一个类或模块:
  • Create a [class/module] for [specific functionality] in [programming language].
    Include:
    1. Constructor/initialization
    2. Main methods with clear docstrings
    3. Any necessary private helper methods
    4. Proper encapsulation and adherence to OOP principles
  • 为了优化现有的代码:
  • Here's a piece of code that needs optimization:
    [paste code]
    Please suggest optimizations to improve its performance. For each suggestion, explain the expected improvement and any trade-offs.
  • 用于编写单元测试:
  • Generate unit tests for the following function:
    [paste function]
    Include tests for:
    1. Normal expected inputs
    2. Edge cases
    3. Invalid inputs
    Use [preferred testing framework] syntax.

    人工智能编码工作流程:一步一步的指南

    根据我的经验,这是我发现最有效的AI辅助编码工作流程:

    1. 从明确的规范开始:尽可能清楚地定义你想要构建的内容。
    2. 生成初始代码:使用详细的提示让人工智能生成第一稿。
    3. 审查并理解:仔细阅读代码,确保理解每个部分。
    4. 迭代和完善:向AI询问解释、优化和替代方案。
    5. 测试和调试:使用人工智能来帮助生成单元测试并调试任何问题。
    6. 优化和重构:代码运行后,使用人工智能建议优化和重构。
    7. 使用人工智能来帮助生成代码清晰的文档。

    警告:过度依赖的陷阱

    虽然人工智能是编码的强大工具,但保持健康平衡至关重要。以下是我遇到过的一些陷阱(以及从中学到的教训):

    1. 忽视大局:有时,在与人工智能来回交流时,很容易忽视整体架构和设计。时刻牢记你更广泛的目标。
    2. 接受对简单问题的复杂解决方案:人工智能有时可能会建议过于复杂的解决方案。除非真正需要复杂性,否则始终追求简单。
    3. 忽视学习基本概念:只使用由人工智能生成的代码而不充分理解它很诱人。抵制这种冲动!始终花时间学习和理解。
    4. 忽略性能影响:人工智能不一定始终能生成性能最佳的代码。请始终考虑性能影响,特别是对于系统中关键部分。

    数据库设计和查询优化与人工智能

    无论您在数据库设计方面有多少经验,人工智能都可以成为该领域的一场游戏变革者。人工智能可以帮助我们创建强大的数据库架构,并制定查询,即使是最经验丰富的数据库管理员也会点头赞同。

    利用人工智能优化数据库模式

    在设计数据库模式时,人工智能可以成为一个宝贵的头脑风暴伙伴。这是我经常使用的启动提示:

    I'm designing a database for [describe your application]. The main entities are:
    [List main entities]

    Key requirements:
    1. [Requirement 1, e.g., "Must support fast retrieval of user posts"]
    2. [Requirement 2, e.g., "Need to track user relationships (followers/following)"]
    3. [Requirement 3, e.g., "Must handle large volumes of time-series data for analytics"]

    Please suggest a database schema that includes:
    1. Tables and their columns (with appropriate data types)
    2. Primary and foreign key relationships
    3. Any necessary junction tables for many-to-many relationships
    4. Suggested indexes for performance
    5. Considerations for scalability

    Also, please explain the rationale behind your design choices.

    此提示确保人工智能不仅考虑基本结构,还考虑性能和可扩展性方面。

    精简模式

    一旦您有了初始架构,就是时候对其进行细化了。这就是人工智能可以帮助您思考不同场景的地方。

    Given this initial schema:
    [Paste your schema here]

    Please analyze it considering the following:
    1. Normalization: Is the schema properly normalized? If not, suggest improvements.
    2. Denormalization: Are there any cases where denormalization might improve performance?
    3. Indexing strategy: Suggest additional indexes that might improve query performance.
    4. Scalability: How will this schema handle growth? Any potential bottlenecks?
    5. Data integrity: Are there any constraints or triggers we should consider to ensure data consistency?
    For each suggestion, please explain the pros and cons.

    优化查询的编写

    现在,让我们谈谈查询优化。这是我发现人工智能特别有帮助的地方,特别是对于让你怀疑自己生活选择的复杂查询。这是我用于查询优化的提示:

    I need to optimize the following SQL query:
    [Paste your query here]

    The query is currently taking too long to execute on large datasets. Please:
    1. Analyze the query and identify potential performance issues.
    2. Suggest optimizations, which may include:
    - Rewriting the query
    - Adding or modifying indexes
    - Suggestions for schema changes if necessary
    3. Explain the reasoning behind each optimization.
    4. If possible, provide an estimate of the performance improvement we might expect.
    Additional context:
    - Database system: [e.g., PostgreSQL, MySQL]
    - Approximate table sizes: [e.g., Users table has 1 million rows]
    - Any relevant hardware constraints

    这个提示不仅有助于优化特定的查询,而且通常提供洞察,可以应用到数据库互动的其他部分。

    数据库相关任务的提示思路

    为了帮助您充分利用人工智能在数据库工作中的作用,以下是一些更具体的提示思路:

    • 针对索引优化:
    Given the following table structure and common queries:
    [Paste table structure and sample queries]

    Please suggest an optimal indexing strategy. Consider:
    1. Which columns should be indexed?
    2. Should we use single-column or multi-column indexes?
    3. Are there any cases where a covering index would be beneficial?
    4. How might these indexes affect write performance?
  • 数据迁移规划:
  • I need to migrate data from an old schema to a new one:
    Old schema:
    [Paste old schema]

    New schema:
    [Paste new schema]

    Please help me create a migration plan:
    1. Identify the steps needed to transform the data
    2. Suggest any intermediate tables or views that might be helpful
    3. Consider data integrity and how to handle potential conflicts
    4. Propose a strategy to verify the migration's success
  • 用于查询性能故障排除:
  • The following query is performing poorly:
    [Paste problematic query]

    Execution plan:
    [Paste execution plan if available]

    Please analyze this query and suggest improvements:
    1. Identify any sub-optimal parts of the query or execution plan
    2. Suggest alternative ways to write the query
    3. Are there any missing indexes that could help?
    4. Would denormalizing any part of the schema improve performance for this query?

    AI辅助数据库性能调优

    我发现人工智能特别有帮助的一个领域是整体数据库性能调优。这是我用来进行一般性能审查的提示:

    I'm looking to improve the overall performance of my database. Here's an overview:
    - Database system: [e.g., PostgreSQL 13]
    - Current size: [e.g., 500GB]
    - Main tables and their sizes: [List main tables]
    - Common query patterns: [Describe typical queries]
    - Current pain points: [e.g., slow joins on large tables, poor write performance during peak hours]

    Please provide a comprehensive performance tuning plan, including:
    1. Configuration parameters that might need adjustment
    2. Indexing strategy review
    3. Query optimization techniques
    4. Potential schema optimizations
    5. Caching strategies
    6. Any other relevant suggestions for improving performance
    For each suggestion, please explain the expected impact and any potential trade-offs.

    这种综合性的审查可以为您提供一个坚实的数据库优化路线图,通常会突出一些您可能没有考虑过的领域。

    警告:数据库设计中的人为因素

    虽然人工智能是用于数据库工作的一种令人难以置信的工具,但重要的是记住人类因素的重要性:

    1. 业务逻辑理解:人工智能可以提出最佳结构,但您需要确保它们符合您特定的业务需求和未来的可扩展性要求。
    2. 敏感数据:请注意您特定情境中人工智能可能不了解的数据隐私和安全问题。
    3. 在真实环境中测试:始终要在与生产环境相似的条件下彻底测试人工智能建议的优化。
    4. 持续学习:将人工智能作为学习工具使用。不仅要实施其建议,还要努力理解其背后的原则。
    5. 定期审查:随着您的应用程序的发展,数据库需求可能会发生变化。定期使用人工智能辅助审查数据库设计和性能。

    文档制作变得简单

    我知道对于我们许多人来说,撰写文档似乎是一项繁琐的任务,但如果我告诉你,借助人工智能,文档编写实际上可以成为开发过程中一项令人愉悦且效率极高的部分,你会怎么想?以下是一些建议,教你如何利用人工智能改变你处理文档的方式。

    使用人工智能生成文档

    优秀的AI生成文档的关键,在于如何引导AI。以下是我发现非常有效的模板:

    I need to create documentation for [project/component name]. Please generate:

    1. An overview of the [project/component]
    2. Installation instructions
    3. Configuration options
    4. API reference (if applicable)
    5. Usage examples
    6. Troubleshooting guide
    7. FAQ section

    For each section, consider:
    - The target audience (e.g., developers, end-users)
    - Any prerequisites or dependencies
    - Common pitfalls or misconceptions
    - Best practices

    Please use clear, concise language and include relevant code snippets where appropriate.

    这个全面的提示确保您的AI助手涵盖好文档的所有关键方面。

    优化AI生成文档的准确性和清晰度

    现在,就像代码生成一样,您不能只是接受AI的输出就算完事。这是我精炼AI生成文档的过程:

    1. 审核准确性:仔细查看文档,确保所有信息与您的实际代码和预期功能相一致。
    2. 检查清晰度:确保解释清晰易懂,符合目标受众的理解。
    3. 验证代码片段:测试任何包含的代码示例,确保它们按预期工作。
    4. 添加特定项目细节:融入您项目的任何独特方面,人工智能可能不知道的。
    5. 增强可视化效果:考虑在哪里可以使用图表、流程图或屏幕截图来提高理解。

    这是我用来完善特定部分的提示:

    Please review and improve the following documentation section:
    [Paste section here]

    Consider:
    1. Clarity of explanation
    2. Completeness of information
    3. Appropriate level of detail for the target audience
    4. Consistency with best practices in technical writing
    Suggest improvements and explain your reasoning.

    不同类型文档的提示思路

    您的项目的不同方面可能需要不同的文档编写方式。以下是针对特定文档需求量身定制的一些提示:

    • API文档:
    Generate API documentation for the following endpoint:
    [Paste endpoint details]
    Include:
    1. Endpoint URL and method
    2. Request parameters and their types
    3. Request body format (if applicable)
    4. Response format and possible status codes
    5. Example request and response
    6. Any authentication requirements
    7. Rate limiting information (if applicable)
  • 对于README文件:
  • Create a README.md file for my GitHub repository. The project is [brief description]. Include:
    1. Project title and description
    2. Installation instructions
    3. Usage examples
    4. Contributing guidelines
    5. License information
    6. Badges (e.g., build status, version, etc.)
    Use proper Markdown formatting and consider adding a table of contents for easier navigation.
  • 用户指南:
  • Generate a user guide for [product/feature name]. The target audience is [describe audience]. Include:
    1. Introduction and purpose of the product/feature
    2. Getting started guide
    3. Main features and how to use them
    4. Advanced usage tips
    5. Troubleshooting common issues
    Use simple language and consider including step-by-step instructions with hypothetical screenshots placeholders.
  • 对于代码注释和文档字符串:
  • Generate appropriate comments and docstrings for the following code:
    [Paste code here]
    Follow [language-specific] conventions for docstrings. Include:
    1. Brief description of the function/class
    2. Parameters and their types
    3. Return value and type
    4. Any exceptions that might be raised
    5. Usage examples if the function/class usage is not immediately obvious

    利用人工智能来实现实时文档

    在文档中使用人工智能的最酷方法之一是用于维护“活体文档” - 随着项目发展而变化的文档。这是我处理这个问题的方法:

    • 版本化您的文档:将您的文档与代码一起放置在版本控制中。
    • 更新文档并记录代码更改:当您进行重要的代码更改时,请使用此提示:
    I've made the following changes to my code:
    [Summarize changes]
    Please update the relevant sections of the documentation to reflect these changes.
    Highlight any breaking changes or new features that users should be aware of.
  • 定期审查:根据您的项目进度,每隔几周或几个月使用此提示:
  • Please review the following documentation:
    [Paste current docs]
    Considering the latest best practices and common user pain points in similar projects:
    1. Suggest any sections that should be added or expanded
    2. Identify any parts that might be outdated or no longer relevant
    3. Recommend improvements for clarity and user-friendliness

    这种方法确保您的文档保持最新,并继续有效地为您的用户提供服务。

    AI辅助文档的隐藏好处

    现在,让我告诉大家一个让我感到惊讶的事情,那就是使用人工智能进行文档编写。我发现,通过人工智能创建和完善文档的过程通常会帮助我改进实际的代码。

    如何呢? 嘛,当我向AI(以及我的未来用户)解释概念时,有时我会意识到我的代码中的某些部分并不像我想象的那样直观或良好结构。 这促使我重构和改进代码本身。

    此外,有时由人工智能生成的全面文档帮助我识别边缘案例或我未考虑过的潜在功能。这就像有一个彻底的,公正的审查人员为我的代码和我的思考过程进行审查。

    警告:人的因素仍然至关重要

    人工智能不应取代对人类监督和输入的需求。在撰写文档时,请记住以下几点:

    1. 项目特定知识:人工智能无法了解您项目背后独特的情境或决策。确保将这些个人知识融入您的文件中。
    2. 用户共鸣:虽然人工智能可以编写清晰的指导,但您最了解您的用户。始终从用户的角度审查文档。
    3. 品牌和声音:如果您的项目或公司拥有特定的语气或风格指南,您将需要相应调整人工智能生成的内容。
    4. 敏感信息:请注意,在与AI的提示中不要包含任何敏感或专有信息。

    当我们结束这一部分时,我希望你能以新的视角看待编码、设计和文档撰写。软件工程中烦琐的部分不再需要是一种苦差事。使用人工智能可以成为你的开发过程中的重要组成部分,可以改进你的代码和用户体验。

    本系列的下一篇文章将涵盖测试、优化、版本控制,更不用说大量的提示想法了!跟随我,确保您不会错过。

    到那时,愉快的编码!

    2024-08-31 04:20:50 AI中文站翻译自原文