| کانال توسعهدهندگان جاوااسکریپت |
یکی از سادهترین تکنیکهای Refactoring برای تمیزتر شدن کد جاوااسکریپت، استفاده از الگوی Early Return است ✨
در این الگو بهجای اینکه یک تابع را با if تو در تو و بلاکهای بزرگ بپیچیم، شرطهای نامعتبر را زودتر برمیگردانیم و مسیر «عادی» تابع را خوانا و سرراست نگه میکنیم.
نمونه کد شلوغ بدون Early Return 👇
function createOrder(user, items) {
if (user) {
if (user.isActive) {
if (Array.isArray(items) && items.length > 0) {
const total = items.reduce((sum, it) => sum + it.price, 0);
if (total > 0) {
return { userId: user.id, total, status: "CREATED" };
} else {
throw new Error("Total must be positive");
}
} else {
throw new Error("Items required");
}
} else {
throw new Error("User not active");
}
} else {
throw new Error("User required");
}
}
خواندن این تابع سخت است؛ منطق اصلی بین ifهای تودرتو گم شده.
همان منطق با Early Return 🧼
function createOrder(user, items) {
if (!user) {
throw new Error("User required");
}
if (!user.isActive) {
throw new Error("User not active");
}
if (!Array.isArray(items) || items.length === 0) {
throw new Error("Items required");
}
const total = items.reduce((sum, it) => sum + it.price, 0);
if (total <= 0) {
throw new Error("Total must be positive");
}
return { userId: user.id, total, status: "CREATED" };
}
حالا:
• تمام شرطهای نامعتبر بالا جمع شدهاند و سریع تابع را ترک میکنند ✅
• «مسیر خوشحال» وسط تابع مثل یک داستان خطی و قابلخواندن است ✅
• دیباگ و لاگگرفتن سادهتر شده است ✅
نکته کاربردی در پروژههای React / Node.js
در هندلرهای API و کنترلرهای Express هم همین الگو کمک زیادی میکند تا از callback hell جدید یعنی if hell فرار شود:
export const handler = async (req, res) => {
const { user } = req;
if (!user) {
return res.status(401).json({ message: "Unauthorized" });
}
if (!user.isActive) {
return res.status(403).json({ message: "Inactive user" });
}
const data = await loadDashboardData(user.id);
return res.json(data);
};
در مستندات MDN درباره return و جریان کنترل توضیحات بیشتری آمده که مطالعهاش دید خوبی میدهد.
هرجا تابعی دیدۀ میشود که تو در تو و سختخوان است، یک بار با Early Return بازنویسیاش، هم برای خودتان هم برای تیم، خوانایی کد را چند درجه بالا میبرد 🚀
🔖 #Javascript #JS #جاوااسکریپت #JavaScript #Clean_Code #Refactoring #Early_Return #Node_js #Express #Readability
👤 Developix
💎 Channel: @DevelopixJavascript
7 · 965 ·