

# OPS05-BP07 实施提高代码质量的实践
<a name="ops_dev_integ_code_quality"></a>

实施能够提高代码质量并尽可能减少缺陷的最佳实践。一些示例包括测试驱动型开发、代码审查、标准采用和结对编程。将这些实践合并到您的持续集成和交付流程中。

 **期望的结果：** 您的组织使用代码审查或结对编程等最佳实践来提高代码质量。在软件开发生命周期内，开发人员和操作人员采用代码质量最佳实践。 

 **常见反模式：** 
+ 在没有进行代码审查的情况下将代码提交到应用程序的主分支。变更会自动部署到生产环境并导致中断。
+  开发新应用程序，而不进行任何单元测试、端到端测试或集成测试。在部署之前无法测试应用程序。 
+  您的团队在生产中进行手动变更以解决缺陷问题。变更没有经过测试或代码审查，也不会通过持续集成和交付流程捕获或记录。 

 **建立此最佳实践的好处：** 通过采用提高代码质量的实践，能够最大限度地减少引入生产中的问题。使用最佳实践（例如，结对编程和代码审查）提高代码质量。 

 **未建立这种最佳实践的情况下暴露的风险等级：** 中 

## 实施指导
<a name="implementation-guidance"></a>

 实施提高代码质量的实践，以便在部署代码之前尽可能减少缺陷。使用测试驱动型开发、代码审查和结对编程等实践来提高开发的质量。 

 **客户示例** 

 AnyCompany Retail 采用几种做法来提高代码质量。他们采用了测试驱动型开发作为编写应用程序的标准。对于一些新功能，他们让开发人员在冲刺阶段结对编程。在集成和部署之前，由高级开发人员对每个拉取请求进行代码审查。 

### 实施步骤
<a name="implementation-steps"></a>

1.  在持续集成和交付流程中采用测试驱动型开发、代码审查和结对编程等代码质量实践。使用这些技术来提高软件质量。 

   1.  [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) 可以使用机器学习为 Java 和 Python 代码提供编程建议。 

   1.  您可以使用 [AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/welcome.html) 创建共享开发环境，在那里您可以协作开发代码。 

 **实施计划的工作量级别：** 中。实施此最佳实践有很多方法，但获得组织采用可能并非易事。 

## 资源
<a name="resources"></a>

 **相关最佳实践：** 
+  [OPS05-BP06 共享设计标准](ops_dev_integ_share_design_stds.md) - 作为代码质量实践的一部分，您可以共享设计标准。 

 **相关文档：** 
+ [ 敏捷软件指南 ](https://martinfowler.com/agile.html)
+ [我的 CI/CD 管道统领我的发布](https://aws.amazon.com/builders-library/cicd-pipeline/)
+ [ 使用 Amazon CodeGuru Reviewer 自动审查代码 ](https://aws.amazon.com/blogs/devops/automate-code-reviews-with-amazon-codeguru-reviewer/)
+ [ 采用测试驱动型开发方法 ](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/development-best-practices.html)
+ [ DevFactory 如何使用 Amazon CodeGuru 构建更好的应用程序 ](https://aws.amazon.com/blogs/machine-learning/how-devfactory-builds-better-applications-with-amazon-codeguru/)
+ [ 关于结对编程 ](https://martinfowler.com/articles/on-pair-programming.html)
+ [ RENGA Inc. 使用 Amazon CodeGuru 自动进行代码审查 ](https://aws.amazon.com/blogs/machine-learning/renga-inc-automates-code-reviews-with-amazon-codeguru/)
+ [ 敏捷开发的艺术：测试驱动型开发 ](http://www.jamesshore.com/v2/books/aoad1/test_driven_development)
+ [ 为什么代码审查很重要（而且实际上节省了时间！） ](https://www.atlassian.com/agile/software-development/code-reviews)

 **相关视频：** 
+ [AWS re:Invent 2020：使用 Amazon CodeGuru 持续改进代码质量 ](https://www.youtube.com/watch?v=iX1i35H1OVw)
+ [ 2021 AWS 峰会（澳大利亚和新西兰）- 用 CDK 和测试驱动型开发推动测试优先战略 ](https://www.youtube.com/watch?v=1R7G_wcyd3s)

 **相关服务：** 
+ [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html)
+ [ Amazon CodeGuru Profiler ](https://docs.aws.amazon.com/codeguru/latest/profiler-ug/what-is-codeguru-profiler.html)
+  [AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/welcome.html) 