разделение командных запросов (CQS) является фундаментальным принципом дизайна программного обеспечения, который способствует ясности и простоте в вашей кодовой базе. Придуманный Бертран Мейер, принцип гласит, что каждый метод в системе должен либо выполнять действие (команда), либо возвращать данные (запрос), но никогда не оба. Это различие гарантирует, что ваш код будет легче понять, тестировать и поддерживать.
]в этом сообщении в блоге мы рассмотрим ключевые аспекты CQ, как его реализовать, и преимущества, которые он приносит для разработки программного обеспечения. Мы также предоставим примеры применения CQ в практических сценариях, таких как дизайн API и взаимодействия с базой данных.
]1⃣ понимание оснований CQS
]в своем ядро CQS разделяет функции на две отдельные категории:
]✓ Команды: выполнить действия, которые изменяют состояние системы, но не возвращают значение (например, обновление базы данных или отправка электронной почты).
✓ Queries: извлечь данные без изменения состояния системы (например, получение данных пользователя из базы данных).
]это разделение упрощает рассуждения о коде и избегает непреднамеренных побочных эффектов.
2⃣ Преимущества использования CQS
]
Улучшенная читаемость кода: очистить различие между командами и запросами облегчает понимание кода.
]
Снижение побочных эффектов: запросы не изменяют состояние, обеспечивая предсказуемое поведение.
]
Проще говоря, команды и запросы могут быть проверены независимо, уменьшая сложность в тестовых случаях.
]
Масштабируемый дизайн: поощряет модульный и отдельный код, облегчая масштаб и расширение.
3⃣ реализация CQS на практике
]Пример: express.js api
]давайте применим принципы CQS к приложению Express.js:
]? Без CQS:
]
app.post('/user', (req, res) => { const user = createUser(req.body); // Command res.json(user); // Query });]
? С CQS:
]
app.post('/user', (req, res) => { createUser(req.body); // Command res.sendStatus(201); }); app.get('/user/:id', (req, res) => { const user = getUser(req.params.id); // Query res.json(user); });]
здесь, команды (createUser) и Queries (getUser) разделены, что делает обязанности каждой функции более четкой.
]4⃣ вызовы и решения
]интеграция с устаревшим кодом: принятие CQ в существующей кодовой базе может потребовать рефакторинга. Начните с малого, фокусируясь на новых функциях или критических компонентах.
]Overh Hear: строгая приверженность CQS иногда может привести к дополнительным вызовам функций. Оптимизируйте выборочно, чтобы сбалансировать ясность и производительность.
]Заключение
разделение командного запроса является простым, но мощным принципом, который способствует ясности и обслуживаемости в дизайне программного обеспечения. Принимая этот подход, вы можете создавать системы, о которых легче рассуждать, масштабировать и проверить. Независимо от того, проектируете ли вы API, внедряете логику доменов или управляете взаимодействие базы данных, CQS является ценным инструментом для современной разработки программного обеспечения.
]
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3