paint-brush
如何GitHub Copilot 提高开发人员的生产力 由Preeti Verma经过@rsystems

如何GitHub Copilot 提高开发人员的生产力 由Preeti Verma

经过 R Systems4m1970/01/01
Read on Terminal Reader
Read this story w/o Javascript

太長; 讀書

Preeti Verma 在 R Systems Blogbook 第 1 章的获奖文章中探讨了 GitHub Copilot 如何通过自动化代码任务,协助调试,并加快学习新技术来提高生产力,其中包括实时建议和测试生成。
featured image - 如何GitHub Copilot 提高开发人员的生产力 由Preeti Verma
R Systems HackerNoon profile picture
0-item

介绍

基于OpenAI的Codex,GitHub Copilot是一款人工智能驱动的编码助理,与Visual Studio Code、JetBrains和Neovim等流行的IDE无缝集成,通过分析背景、评论和现有代码,Copilot提供实时建议,从单行自动完成到完整的功能,极大地加速开发工作流程。


  1. 减少锅炉代码.
  2. 学习新框架/语言更快.
  3. 有效地调试和文档。
  4. 减轻锅炉板代码。
  5. 更快地学习新框架/语言。
  6. 有效地调试和文档。
  7. 流线协作。

  8. 1 加速重复任务

    1 加速重复任务

    板块代码生成

    Boilerplate代码世代

    Copilot在生成重复代码结构方面表现出色,例如:

    • 类定义 (例如,反应组件,Python数据模型)。
    • API终端点 (例如,Flask,FastAPI)。
    • 数据库查询 (例如,SQL,ORM片段)。
  9. 类定义 (例如,反应组件,Python数据模型)。类别定义
  10. API端点 (例如,Flask,FastAPI)。API终端点
  11. 数据库查询 (例如,SQL,ORM片段)。数据库查询

    例子:

    例子

    开发人员在Python文件中键入 def create_user 可能会收到:


    python def create_user(用户名: str,电子邮件: str) -> 用户: ""在数据库中创建新用户。" user = User(username=username, email=email) db.session.add(user) db.session.commit()返回用户 
    python def create_user(username: str, email: str) -> User: """Create a new user in the database.""" user = User(username=username, email=email) db.session.add(user) db.session.commit() return user

    影响:

    影响力
    • 节省了30–50%的键盘打击(GitHub,2022年)。
    • 减少了日常任务的认知负荷。
    • Save 30–50% 的键盘打击(GitHub, 2022)。<强>30~50%
    • 减少日常任务的认知负荷。


      2 背景了解代码完成

      2 背景意识的代码完成

      Copilot分析:

      • 打开文件和导入.
      • 变量名称和函数签名.
      • 评论和文本字符串。
      • 打开文件和导入。
      • 变量名称和函数签名。
      • 评论和教程。
      • 使用案例:

        使用案例

        在JavaScript文件中,输入了 axios ,键入:


        javascript // 从 API 
        中获取用户数据javascript // Fetch user data from API


        Triggers Copilot 建议:


        javascript const response = wait axios.get('/api/users');返回响应.data; 
        javascript const response = await axios.get('/api/users'); return response.data;

        优势:

        <强>优势
        • Minimizes context-switching 到文档。
        • Minimizes context-switching 到文档。背景交换


          3 学习新技术

          3 学习新技术

          Copilot 作为未知语言/框架的实时导师。

          例子:为Python开发人员而努力

          例子:为Python开发人员而努力

          开发者写道:


          rust // 计算 n 
          的因子值rust // Calculate factorial of n


          Copilot 建议:


          rust fn factorial(n: u32) -> u32 {匹配 n { 0 => 1, _ => n * factorial(n - 1), } 
          rust fn factorial(n: u32) -> u32 { match n { 0 => 1, _ => n * factorial(n - 1), } }

          结果:

          结果
          • 更快登机到新的堆栈。
          • 鼓励实验。
          • 更快登陆到新的堆栈。
          • 鼓励实验。


            4 调试和文档

            4 调试和文档

            自动生成的Docstrings

            自动生成的Docstrings

            对于 Python 函数:


            python def calculate_discount(价格:浮动,折扣:浮动) ->浮动: 
            python def calculate_discount(price: float, discount: float) -> float:


            Copilot 添加:


            python """ 计算了折扣的价格。Args:价格(float):原始价格。折扣(float):折扣的百分比(0-1)。python
            """  
            Calculates the discounted price.  
            
            Args:  
                price (float): Original price.  
                discount (float): Discount percentage (0-1).  
            
            Returns:  
                float: Final price after discount.  
            """  
            

            错误分辨率

            错误分辨率

            Copilot 解释常见的错误(例如:TypeError、未定义变量)并建议修复。


            5 单元测试生成

            5 单元测试生成

            Copilot的测试案例草案与常见的测试框架相一致(例如, pytest, Jest)。

            例子:

            例子

            为一个函数:


            python def divide(a: float, b: float) -> float: return a / b 
            python def divide(a: float, b: float) -> float: return a / b


            Typing def test_divide 引发器:


            python def test_divide(): assert divide(10, 2) == 5 assert divide(0, 1) == 0 with pytest.raises(ZeroDivisionError): divide(1, 0) 
            python def test_divide(): assert divide(10, 2) == 5 assert divide(0, 1) == 0 with pytest.raises(ZeroDivisionError): divide(1, 0)

            Impact:

            影响力
            • 改进了测试覆盖率 以最小努力。
            • 改进 测试覆盖率 用最小努力。测试覆盖面


              6 数据库查询支持

              6. 数据库查询支持

              Copilot 简化了 SQL/NoSQL 查询:

              例子:

              例子

              类似的评论:


              sql - 获取2023年创建的活跃用户 
              sql -- Get active users created in 2023


              生成:


              sql SELECT * FROM users WHERE status = 'active' AND created_at >= '2023-01-01'; 
              sql SELECT * FROM users WHERE status = 'active' AND created_at >= '2023-01-01';

              支持的工具:

              支持的工具
              • SQLAlchemy, Django ORM, MongoDB 查询。
              • SQLAlchemy, Django ORM, MongoDB 查询。


                7 合作 & 代码一致性

                7. 合作 & 代码一致性
                • 强化模式:一致的docstrings、错误处理和风格。
                • 帮助新团队成员:通过评论解释遗传代码。
                • 强化模式:一致的字符串,错误处理和风格。强化模式
                • 帮助新团队成员登机:通过评论解释遗传代码。帮助新团队成员登机


                  挑战和缓解

                  挑战与缓解

                  挑战

                  挑战





                  强化

                  强化

                  暴力事件

                  不正确的建议

                  安全风险(如硬密钥)

                  过度依赖

                  Challenge


                  <

                  挑战

                  挑战

                  挑战

                  不正确的建议

                  始终手动检查逻辑。

                  不正确的建议

                  始终手动检查逻辑。

                  始终手动检查逻辑。

                  安全风险(例如,硬代码密钥)

                  避免使用敏感代码。

                  安全风险(如硬密钥)

                  避免使用敏感代码。

                  避免使用敏感代码。

                  过度依赖

                  用作助手,而不是替代品。

                  过度依赖

                  用作助手,而不是替代品。

                  用作助手,而不是替代品。


                  量化效益

                  量化效益
                  • 55% 更快 任务完成(GitHub, 2023)。
                  • 74% 的开发人员报告减少心理努力(Stack Overflow Survey, 2023)。
                  • 55%更快 任务完成(GitHub, 2023)。 55% 更快
                  • 74%的开发人员报告了减少的心理努力(Stack Overflow 调查,2023年)。74% 的开发者


                    总结

                    结论

                    GitHub Copilot正在通过:

                    改变开发者的生产力


                  • 作为一个24/7对程序员。

                    作为一个24/7对程序员的行为。24/7对程序员

                  • 减少对重复任务所花费的时间

                  • .
                • 减少对重复任务所花费的时间

                  在重复任务上花费的时间
                • 向新技术降低障碍

                  向新技术降低障碍 Lowering barriers


                  为了获得最佳结果,将Copilot的速度与人力监督相结合,以确保代码质量和安全性。人力监督《hr》

                  这篇文章由 Preeti Verma赢得了R Systems的第1轮博客:第1章

                  这篇文章由 Preeti Verma赢得了R Systems的第一轮博客:第一章

                  普雷蒂·维尔玛《hr》