」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 命令查詢分離(CQS):更好的軟件設計指南

命令查詢分離(CQS):更好的軟件設計指南

發佈於2025-03-23
瀏覽:549

命令查詢分離(CQS)是軟件設計的基本原理,可在代碼庫中促進清晰度和簡單性。由貝特蘭·邁耶(Bertrand Meyer)創造的原則指出,系統中的每種方法都應執行操作(命令)或返回數據(查詢),但絕不同時執行。這種區別可確保您的代碼更易於理解,測試和維護。

在此博客文章中,我們將探討CQ的關鍵方面,如何實施它以及它帶來的軟件開髮帶來的好處。我們還將提供在實用場景中應用CQ的示例,例如API設計和數據庫交互。 [2

的核心,CQS將函數分為兩個不同的類別:

命令:執行更改系統狀態但沒有返回值的操作(例如,更新數據庫或發送電子郵件)。

在不更改系統狀態的情況下檢索數據(例如,從數據庫中獲取用戶詳細信息)。

這種分離簡化了有關代碼的推理,並避免了意外的副作用。

2️⃣

使用CQS 的好處 改進的代碼可讀性:命令和查詢之間的明確區別使代碼更易於理解。 減少副作用:查詢不會修改狀態,確保可預測的行為。 更輕鬆的測試:可以獨立測試命令和查詢,從而降低了測試用例的複雜性。 可擴展設計:鼓勵模塊化和脫鉤代碼,使系統更易於擴展和擴展。 [2

讓我們將CQS原理應用於Express.js應用程序:

?沒有CQS:

app.post('/user',(req,res)=> { const user = createuser(req.body); // 命令 res.json(用戶); // 詢問 });

?使用CQS:
app.post('/user',(req,res)=> { CreateUser(req.body); // 命令 res.sendstatus(201); }); app.get('/user/:id',(req,res)=> { const user = getuser(req.params.id); // 詢問 res.json(用戶); });

在這裡,命令(createuser)和查詢(getuser)分開,使每個函數的職責更加清晰。
[2

與舊代碼集成:

在現有代碼庫中採用CQS可能需要重構。啟動小,專注於新功能或關鍵組件。 嚴格遵守CQS有時會導致其他功能調用。選擇性優化以平衡清晰度和性能。

結論

命令查詢分離是一個簡單而強大的原則,它促進了軟件設計中的清晰度和可維護性。通過採用這種方法,您可以創建更易於推理,擴展和測試的系統。無論您是設計API,實現域邏輯還是管理數據庫交互,CQS都是現代軟件工程的寶貴工具。 [2


版本聲明 本文轉載於:https://dev.to/wallacefreitas/command-query-separation-cqs-a-guide-to-better-software-design-2jab?1如有侵犯,請聯繫[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3