

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 常見問答集
<a name="faq"></a>

## 為什麼我應該使用六邊形架構？
<a name="q1"></a>

六角形架構將開發人員的焦點轉移到網域邏輯，簡化測試自動化，並改善程式碼品質和適應性。這些改善可加快上市時間，並簡化技術和組織擴展。

## 為什麼我應該使用網域驅動型設計？
<a name="q2"></a>

網域驅動設計 (DDD) 可讓您使用業務利益相關者和工程師之間的共同語言來建置軟體元件和建構。DDD 可協助您管理軟體複雜性，並且是長期維護軟體產品的有效策略。

## 我可以在沒有六邊形架構的情況下練習測試驅動型開發嗎？
<a name="q3"></a>

是。測試驅動的開發 (TDD) 不限於特定軟體設計模式。不過，六邊形架構可讓您更輕鬆地練習 TDD。

## 我可以在沒有六邊形架構和網域驅動設計的情況下擴展產品嗎？
<a name="q4"></a>

是。大多數的設計模式都可以實現技術和組織產品擴展。不過，六邊形架構和 DDD 可讓您更輕鬆地擴展，而且長期而言，對於大型專案更有效。

## 我應該使用哪些技術來實作六邊形架構？
<a name="q5"></a>

六角形架構不限於特定技術堆疊。我們建議您選擇支援相依性反轉和單位測試的技術。

## 我正在開發最基本可行的產品。花時間考慮軟體架構是否合理？
<a name="q6"></a>

是。我們建議您使用 MVPs 熟悉的設計模式。建議您嘗試並練習六邊形架構，直到工程師熟悉它為止。為新專案建立六邊形架構不需要比不使用任何架構時投入更多的時間。

## 我正在開發最基本可行的產品，沒有時間撰寫測試。
<a name="q7"></a>

如果您的 MVP 包含商業邏輯，強烈建議為此撰寫自動化測試。這將減少回饋迴圈並節省時間。

## 我可以搭配六邊形架構使用哪些額外的設計模式？
<a name="q8"></a>

使用 [CQRS 模式](https://www.cosmicpython.com/book/chapter_12_cqrs.html)來支援整體系統的擴展。使用儲存[庫模式](https://www.cosmicpython.com/book/chapter_02_repository.html)來存放和還原您的網域模型。使用工作單位模式來管理交易程序步驟。使用繼承的合成來建立網域彙總、實體和值物件的模型。請勿建置複雜的物件階層。