命令查询分离(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