`

Github 官方给出的代码审查指导原则

 
阅读更多

这篇文章的内容由github官方提供,指导你如何在github上进行代码审查和如何让别人审查自己的代码。

针对所有人的审查

  • 接受这样的事实:很多编程上的主张都是一种个人观点。应该讨论它们的利与弊,提出你的倾向观点,迅速的达成一种解决方案。
  • 提问,而不是命令。(“把这个变量命名成:user_id你觉得怎样?”)
  • 请求说明。(“我不明白。你能解释一下吗?”)
  • 避免代码的归属之争。(“我的”,“不是我的”,“你的”)
  • 避免使用一些会被认为是有关人身特征的词语。(“笨蛋”,“愚蠢”)要把所有人都看作是有魅力的、聪明的、善意的。
  • 要明确。要记着并不是每个人都能理解你的意图。
  • 要谦虚。(“我不能确定——我们来分析一下。”)
  • 不要用夸张修辞语。(“总是”,“从不”,“永远”,“毫无…”)
  • 不要讽刺。
  • 展现真实的你。如果你不是幽默型的人,不喜欢使用一些表情符号或动画gif图,不要勉强。如果你是这种人,请自信的发挥。
  • 如果有太多的“我不理解”或“另一种方案:”的评论,请专门针对这个人进行交流。可以把你们线下的交流总结成一个帖子附在后面。

让别人审查你的代码

  • 对审查者的建议表示感激。(“谢谢提醒。我会把它改正。”)
  • 理解审查是对事不对人。审查的是你的代码,而不是你。
  • 解释为什么代码写成这样。(“因为xxx原因我才写成这样。如果我把这个类/文件/方法/变量改个名会更清晰些吗?”)
  • 整理所作的改动,在以后的迭代中重构它们。
  • 在做修改的版本上注明代码审查的链接。(“Ready for review:http://github.com/organization/project/pull/1″)
  • push提交要基于最早的一轮反馈,并形成一个独立的分支。等这个分支上的任务完全完成了再合并。这让审查者能够根据早先的反馈找到你的单独的更新。
  • 努力站在审查者的立场上理解。
  • 争取回复每个评论。
  • 直到最后一个人退出登录后再合并分支。
  • 直到持续集成测试(TDDium, TravisCI,等)告诉你这个分支的测试套件通过后再合并分支。

代码审查的过程

先要清楚你提交的代码的必要性(是修补bug,提升用户体验,重构…)。然后:

  • 针对你感觉非常好的地方以及不是很好的地方与作者交流。
  • 找出既能解决问题又能简化代码的方法。
  • 如果讨论变得过于哲学或理论,把讨论转到线下,做成一个有规律的每周五下午的讨论会。同时,是否采用你提出的实现方案,让作者自己做决定。
  • 提出你的实现方案,但要表现出作者也在考虑这种方案。(“你觉得这里用一个自定义校验如何?”)
  • 努力理解作者的立场。
  • pull请求登出时,加一个 :thumbsup: 或“可以合并了”的注释。

关于程序风格样式的评论注释

审查者应该对那些不符合样式指导的地方进行注释。例如这样注释:

[Style](../style):

> 按名称的字母顺序排列多个路由。

对上面这个提醒的一个回复的例子:

哦。你眼真尖,谢谢。已在 a4994ec 修复。

如果你不同意某个指导原则,请在指导repo里创建一个问题,而不要再代码审查中争论它。同时,请运用这个指导原则。

分享到:
评论

相关推荐

    代码审查:追求有效和高效的敏捷代码审查

    代码审查是软件开发过程中的重要环节,特别是在敏捷开发环境中,它对确保代码质量和团队协作具有不可忽视的作用...通过优化审查流程,设置明确的指导原则,以及利用合适的工具,我们可以使代码审查变得既高效又有价值。

    在GitHub上主持和管理开源项目的推荐实践.pptx

    - **代码审查**:定期进行代码审查不仅有助于发现潜在的安全漏洞,还能提高代码质量。 - **扫描工具**:利用自动化工具对代码进行扫描,及时发现并修复安全问题。 #### 开源原则的应用 - **同行评审**:强调通过...

    代码大全(第二版)高清带目录pdf

    作者提出了关于命名规范、注释编写、代码布局等方面的指导原则,帮助开发者养成良好的编码习惯。 2. **设计模式与重构**:书中有大量关于设计模式的讨论,如工厂模式、单例模式、观察者模式等,这些模式是解决常见...

    privacycg.github.io:隐私社区小组的网站和章程

    其官方网站"privacycg.github.io"是一个公开的存储库,用于发布和维护这个社区小组的工作成果和相关信息。 在该压缩包文件"privacycg.github.io-main"中,我们可以推测包含了该网站的源代码和相关文档。这通常包括...

    C#极限编程指导

    C#开发者可以利用GitHub或Visual Studio Team Services的代码审查功能进行此操作。 11. **保持简单**:遵循"YAGNI"(You Aren't Gonna Need It)原则,避免过早优化,只做必要的工作。 12. **技术债务**:理解并...

    ios代码规范

    包括代码审查、持续集成、代码格式化等实践,这些都有助于提升团队的整体开发水平和代码质量。 **12. 参考文档** 遵循Apple的官方编程指南,如《Objective-C编程指南》和《Cocoa设计模式》,同时参考开源社区的...

    2023年质量管理重点归纳.zip

    总结,2023年的质量管理重点在于利用C#的特性和工具,通过单元测试、代码审查、静态分析、异常处理、性能优化、设计模式、代码规范以及版本控制等多个层面,全面提升软件的质量和可维护性。开发者应持续学习和实践...

    软件工程中的代码质量管理与自动化测试策略探讨.pptx

    - **选择代码审查工具**:如GitHub Pull Request、Bitbucket Pull Request等。 - **选择审查人员**:通常是具有相关领域经验的技术专家。 - **发起审查**:提交代码变更请求。 - **审查代码**:审查人员根据代码规范...

    peer-code-review-resources

    标题“peer-code-review-resources”揭示了这是一个关于同行代码审查的资源集合,可能包含了各种工具、最佳实践和指导原则,帮助开发者进行有效的代码审查。描述提到该资源是在2021年7月创建或更新的,这暗示了它...

    .net开发代码编写标准

    12. **代码审查**:通过代码审查发现潜在问题,提高团队成员间的知识共享。使用GitHub或GitLab的Pull Request功能。 13. **性能优化**:关注代码性能,避免不必要的数据库查询,减少DOM操作,使用Gzip和CDN加速资源...

    code-review

    在Python项目中,进行代码审查通常会使用版本控制系统(如Git)和代码审查工具(如GitHub或GitLab的Pull Request功能)。开发者首先在自己的分支上完成功能或修复,然后提交更改,发起一个Pull Request。其他团队...

    阿里巴巴Java开发手册终极版

    - **SOLID原则**:包括单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则,指导开发者编写可维护、可扩展的代码。 - **设计模式**:工厂模式、单例模式、观察者模式等经典设计模式在手册中有所...

    阿里巴巴Java开发手册合集(包括1.2.0和最终版1.3.0)

    - 定期进行代码审查,发现并修复潜在问题,提升代码质量。 - 使用重构技巧如提取方法、移除重复代码,使代码结构更清晰。 9. **持续集成与自动化**: - 使用Git进行版本控制,通过GitHub或GitLab进行代码托管。 ...

    编程规范于范例

    - 在提交代码前进行代码审查,以发现潜在问题和改进点。 - 保持开放心态接受反馈,积极改进代码。 以上仅为编程规范的一部分,实际的编程规范会更详细且针对特定语言或项目有所调整。通过遵循这些规范,可以编写...

    阿里巴巴Android开发手册.zip

    - 实行代码审查,提高代码质量,减少bug。 通过遵循《阿里巴巴Android开发手册》中的指导,开发者可以构建更加稳定、高效、易于维护的Android应用。这份文档不仅对初级开发者具有指导意义,对于有经验的开发者来说...

    阿里巴巴《Java开发手册》嵩山版.pdf【2020.08.03最新版】(含所有版本)

    3. 定期进行代码审查,发现并修复潜在问题。 十、持续集成 1. 实施CI/CD流程,确保代码质量。 2. 使用Git等版本控制工具,管理代码变更。 3. 自动化构建与测试,快速发现和修复问题。 以上只是《阿里巴巴Java开发...

    algoritmos-lcvenegas:由GitHub Classroom创建的algoritmos-lcvenegas

    6. **软件工程实践**:如编写良好的注释、遵循编码规范、单元测试、代码审查等。 7. **开源文化**:理解开源许可证、贡献代码到开源项目、参与社区讨论等。 这个项目可能包括一系列练习、挑战或项目,让学习者亲手...

    Online Program - Mentor

    - **代码审查**:团队成员互相审查代码,提升代码质量和团队协作。 通过这个在线导师计划,学习者不仅可以掌握编程技能,还能了解到实际开发中的最佳实践,以及如何在团队中高效协作。导师的角色至关重要,他们将...

    阿里巴巴Java开发手册.zip

    - 代码审核:提倡团队成员之间进行代码审查,以发现潜在问题,提高代码质量。 10. **持续集成/持续部署(CI/CD)** - 持续集成:配置自动化构建,确保每次代码提交都能快速反馈构建结果。 - 持续部署:实现一键...

    软件工程课程设计必备指导书.doc

    5. 开源社区:GitHub、Stack Overflow等,获取代码示例和解决方案 附录A的软件工程课程设计报告格式将包括项目介绍、背景、目标、方法、实现细节、结果分析和总结等内容,是评价学生课程设计的重要依据。通过这份...

Global site tag (gtag.js) - Google Analytics