命令查詢分離(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
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3