

# OPS05-BP07 實作用於提高程式碼品質的實務
<a name="ops_dev_integ_code_quality"></a>

 實作相關實務以提高程式碼品質，並盡可能減少缺陷。部分範例包括測試驅動的開發、程式碼審查、標準採用和配對程式設計。將這些實務併入您的持續整合和交付程序。

 **預期成果：**貴組織使用例如程式碼審核或配對程式設計的最佳實務來改善程式碼品質。開發人員和操作人員在軟體開發生命週期過程中採用程式碼品質最佳實務。

 **常見的反模式：**
+  您將程式碼遞交至應用程式的主要分支，而未進行程式碼審核。變更會自動部署至生產環境，並導致中斷。
+  會開發一個新的應用程式，沒有進行任何單元、端到端或整合測試。無法在部署之前測試應用程式。
+  您的團隊在生產中進行手動變更，以解決問題。變更不會經過測試或程式碼審核，而且不會在持續整合或交付程序中擷取或記錄。

 **建立此最佳實務的優勢：**透過採用實務來提高程式碼品質，就能協助盡量減少生產環境中引發的問題。程式碼品質最佳實務包括配對程式設計、程式碼審核以及 AI 生產力工具的實作。

 **未建立此最佳實務時的曝險等級：**中 

## 實作指引
<a name="implementation-guidance"></a>

 實作實務以提高程式碼品質，在部署之前將故障降至最低。使用像是測試驅動的開發、程式碼審核和配對程式設計等實務來提高開發的品質。

 透過 Amazon Q Developer，利用生成式 AI 的強大功能，提升開發人員生產力和程式碼品質。Amazon Q Developer 包括程式碼建議的產生 (以大型語言模型為基礎)、單元測試的生產 (包括邊界條件)，以及透過偵測和修復安全漏洞增強程式碼安全性。

 **客戶範例** 

 AnyCompany Retail 採用數個實務來改善程式碼品質。它們採用了測試驅動的開發做為撰寫應用程式的標準。對於某些新功能，它們會讓開發人員在衝刺期間一起進行配對程式設計。每個提取請求都會先經過資深開發人員的程式碼審核，然後再整合和部署。

### 實作步驟
<a name="implementation-steps"></a>

1.  在您的持續整合和交付程序中，採用像是測試驅動開發、程式碼審核和配對程式設計的程式碼品質實務。使用這些技術來改善軟體品質。

   1.  使用 [Amazon Q Developer](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/what-is.html)，這是一種生成式 AI 工具，可協助建立單元測試案例 (包括邊界條件)、使用程式碼和註解產生函數、實作眾所周知的演算法、偵測程式碼中的安全政策違規和漏洞、偵測機密、掃描基礎設施即程式碼 (IaC)、記錄程式碼以及更快速地學習第三方程式碼程式庫。

   1.  [Amazon CodeGuru Reviewer](https://docs.aws.amazon.com/codeguru/latest/reviewer-ug/welcome.html) 可以使用機器學習針對 Java 和 Python 程式碼提供程式設計建議。

 **實作計劃的工作量：**中。有許多方式可以實作此最佳實務，但是要讓整個組織採用可能會是一項挑戰。

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

 **相關的最佳實務：**
+  [OPS05-BP02 測試並驗證變更](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_test_val_chg.html) 
+  [OPS05-BP06 共用設計標準](https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/ops_dev_integ_share_design_stds.html) 

 **相關文件：**
+  [採用測試驅動的開發方法](https://docs.aws.amazon.com/prescriptive-guidance/latest/best-practices-cdk-typescript-iac/development-best-practices.html) 
+  [使用 Amazon Q 加速您的軟體開發生命週期](https://aws.amazon.com/blogs/devops/accelerate-your-software-development-lifecycle-with-amazon-q/) 
+  [Amazon Q Developer 現已正式推出，包含可重新構想開發人員體驗的新功能預覽](https://aws.amazon.com/blogs/aws/amazon-q-developer-now-generally-available-includes-new-capabilities-to-reimagine-developer-experience/) 
+  [在 IDE 中使用 Amazon Q Developer 的終極速查表](https://community.aws/content/2eYoqeFRqaVnk900emsknDfzhfW/the-ultimate-cheat-sheet-for-using-amazon-q-developer-in-your-ide) 
+  [左移工作負載，利用 AI 建立測試](https://community.aws/content/2gBZtC94gPzaCQRnt4P0rIYWuBx/shift-left-workload-leveraging-ai-for-test-creation) 
+  [Amazon Q 開發人員中心](https://aws.amazon.com/developer/generative-ai/amazon-q/) 
+  [使用 Amazon CodeWhisperer 快速建置應用程式的 10 種方式](https://aws.amazon.com/blogs/devops/10-ways-to-build-applications-faster-with-amazon-codewhisperer/) 
+  [使用 Amazon CodeWhisperer 超越程式碼覆蓋範圍](https://aws.amazon.com/blogs/devops/looking-beyond-code-coverage-with-amazon-codewhisperer/) 
+  [使用 Amazon CodeWhisperer 進行提示詞工程的最佳實務](https://aws.amazon.com/blogs/devops/best-practices-for-prompt-engineering-with-amazon-codewhisperer/) 
+  [敏捷式軟體指南](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) 

 **相關影片：**
+  [使用適用於軟體開發的 Amazon Q Developer 代理程式來實作 API](https://www.youtube.com/watch?v=U4XEvJUvff4) 
+  [使用 JetBrains IDE 安裝、設定和使用 Amazon Q Developer (操作說明)](https://www.youtube.com/watch?v=-iQfIhTA4J0) 
+  [掌握 Amazon CodeWhisperer 的藝術 - YouTube 播放清單](https://www.youtube.com/playlist?list=PLDqi6CuDzubxzL-yIqgQb9UbbceYdKhpK) 
+  [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 Q Developer](https://aws.amazon.com/q/developer/) 
+  [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) 