Ответ
DRY (Don't Repeat Yourself) — это фундаментальный принцип разработки программного обеспечения, направленный на устранение дублирования логики и данных. В контексте Node.js это означает вынос повторяющегося кода в отдельные функции, модули, утилиты или мидлвари.
Пример нарушения DRY в Node.js приложении:
// Повторение валидации в разных маршрутах
app.post('/api/users', (req, res) => {
if (!req.body.email || !req.body.email.includes('@')) {
return res.status(400).json({ error: 'Invalid email' });
}
// Создание пользователя
});
app.put('/api/users/:id', (req, res) => {
if (!req.body.email || !req.body.email.includes('@')) {
return res.status(400).json({ error: 'Invalid email' });
}
// Обновление пользователя
});
Пример применения DRY:
// Вынос валидации в отдельную функцию-мидлварь
const validateEmail = (req, res, next) => {
if (!req.body.email || !req.body.email.includes('@')) {
return res.status(400).json({ error: 'Invalid email' });
}
next();
};
// Использование в маршрутах
app.post('/api/users', validateEmail, userController.create);
app.put('/api/users/:id', validateEmail, userController.update);
// Или создание утилитарного модуля
// utils/validators.js
export const isValidEmail = (email) => {
return email && email.includes('@') && email.length > 5;
};
Преимущества DRY в Node.js:
- Упрощение поддержки: Изменения вносятся в одном месте
- Снижение ошибок: Устраняется риск рассинхронизации дублированной логики
- Улучшение тестирования: Легче покрыть тестами централизованный код
- Повышение читаемости: Код становится более декларативным
Когда стоит отступить от DRY:
- Если абстракция усложнит понимание кода
- Для одноразовой или тривиальной логики
- Когда две похожие части кода могут эволюционировать в разных направлениях
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶