

# 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) - 您可以在程式碼品質實務中共用設計標準。 

 **相關文件：** 
+ [ Agile 軟體指南 ](https://martinfowler.com/agile.html)
+ [CI/CD 管道是我的 release captain](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)
+ [AWS Summit ANZ 2021 - 透過 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) 