| کانال توسعه‌دهندگان جاوااسکریپت |
3.83K subscribers
37 photos
2 videos
28 links
⭕️ کانال توسعه‌دهندگان جاوااسکریپت دولوپیکس

💠 دولوپیکس | جامعه توسعه‌دهندگان ایرانی

💎 @Developix
🚀 Developix.ir

📌 پشتیبانی و تبلیغات:
@DevelopixSupport
Download Telegram
‌‎پاک‌سازی توابع با تکنیک «Early Return» در JavaScript 🚿

یکی از ساده‌ترین و مؤثرترین تکنیک‌های Clean Code در جاوااسکریپت، استفاده از Early Return است؛ یعنی به‌جای پیچوندن منطق داخل ifهای تودرتو، در همان اول تابع، شرایط نامعتبر را سریع برگردانیم.

این تکنیک توابع را:

• کوتاه‌تر و خواناتر می‌کند
• از Nested if‌های عمیق جلوگیری می‌کند
• باعث می‌شود مسیرهای خطا و edge caseها واضح‌تر دیده شوند


نمونه کد قبل از refactor (کد سخت‌خوان)
function createUser(data) {
if (data) {
if (data.email) {
if (data.password && data.password.length >= 8) {
// save to DB
return { ok: true, user: data };
} else {
return { ok: false, error: 'Weak password' };
}
} else {
return { ok: false, error: 'Email is required' };
}
} else {
return { ok: false, error: 'No data' };
}
}


این تابع کارش را انجام می‌دهد، اما هر شرط جدیدی که اضافه شود، عمق ifها بیشتر می‌شود و دیباگ سخت‌تر.


Refactor با Early Return
function createUser(data) {
if (!data) {
return { ok: false, error: 'No data' };
}

if (!data.email) {
return { ok: false, error: 'Email is required' };
}

if (!data.password || data.password.length < 8) {
return { ok: false, error: 'Weak password' };
}

// happy path
return { ok: true, user: data };
}


الان:

• هر شرط invalid در بالا «قطع» می‌شود 🔪
• مسیر اصلی (happy path) در انتها واضح و تمیز است
• اضافه‌کردن شرط جدید فقط یعنی اضافه کردن چند خط دیگر بالای happy path


نمونه در Express / Node.js 🌐
app.post('/login', async (req, res) => {
const { email, password } = req.body;

if (!email || !password) {
return res.status(400).json({ message: 'Missing credentials' });
}

const user = await findUserByEmail(email);
if (!user) {
return res.status(404).json({ message: 'User not found' });
}

const valid = await comparePassword(password, user.passwordHash);
if (!valid) {
return res.status(401).json({ message: 'Invalid password' });
}

// happy path
res.json({ token: createToken(user) });
});


هر مرحله نامعتبر به‌سرعت return می‌شود و منطق login مثل یک «چک‌لیست» خطی خوانده می‌شود.

نکته مهم 🔍

Early Return با Single Responsibility خیلی خوب جفت می‌شود؛ اگر تابع خیلی طولانی شد، علاوه بر early return، آن را به چند تابع کوچک‌تر با نام‌های خوب بشکنید.

منابع برای مطالعهٔ بیشتر:
MDN – Control Flow
Refactoring.Guru

این سبک نوشتن را کم‌کم در هندلرهای Express، سرویس‌های Node.js یا حتی توابع React خودتان وارد کنید؛ بعد از مدتی، خواندن و نگه‌داری کد برای خودتان و تیم‌تان به‌وضوح راحت‌تر می‌شود 🙌

🔖 #Javascript #JS #جاوااسکریپت #clean_code #early_return #javascript #nodejs #express #refactoring

👤 Developix

💎 Channel: @DevelopixJavascript
👍43