آموزش برنامه نویسی | init_code
3.92K subscribers
18 photos
398 videos
8 files
17 links
💻 از اولین خط کد تا اجرای پروژه.

آموزش تخصصی برنامه‌نویسی، حل چالش‌های کدزنی و توسعه نرم‌افزار برای کسانی که می‌خواهند دنیای دیجیتال را خلق کنند.

🛠 کد بزن، بساز، تکرار کن.

زیر مجموعه تیم شب تاب
Download Telegram
--
### فراتر از کدنویسی؛ هنر معماری با اصل Single Responsibility (SRP)

در دنیای برنامه‌نویسی وب، نوشتن کدی که «کار کند» فقط ۲۰ درصد ماجراست. ۸۰ درصد باقی‌مانده، توانایی نگهداری (Maintenance) و توسعه‌‌پذیری آن کد است. امروز به سراغ اولین و مهم‌ترین اصل از اصول SOLID می‌رویم.

#### 🛠 اصل مسئولیت واحد (SRP) چیست؟
این اصل می‌گوید: «هر کلاس یا ماژول باید فقط و فقط یک دلیل برای تغییر داشته باشد.»

به زبان ساده: یک قطعه کد نباید همزمان هم با دیتابیس حرف بزند، هم محاسبات ریاضی انجام دهد و هم خروجی را برای کاربر نمایش دهد!

#### نمونه کد غیرحرفه‌ای (Spaghetti Code):
در این مثال، یک کلاس هم وظیفه مدیریت کاربر و هم وظیفه اعتبارسنجی و ذخیره در فایل را دارد:

class User {
constructor(name, email) {
this.name = name;
this.email = email;
}

// مدیریت داده‌های کاربر
saveToDatabase() {
console.log(`Saving ${this.name} to DB...`);
}

// اعتبارسنجی - این وظیفه کلاس User نیست!
validateEmail() {
return this.email.includes('@');
}

// نمایش - این هم وظیفه این کلاس نیست!
showProfile() {
return `<h1>${this.name}</h1>`;
}
}

#### نمونه کد حرفه‌ای (Refactored):
در سطح حرفه‌ای، ما وظایف را تفکیک می‌کنیم. این کار باعث می‌شود اگر روزی متد ذخیره‌سازی از فایل به دیتابیس تغییر کرد، نیازی نباشد منطق نمایش پروفایل را دستکاری کنیم.

// ۱. کلاس موجودیت کاربر (فقط داده)
class User {
constructor(name, email) {
this.name = name;
this.email = email;
}
}

// ۲. سرویس اعتبارسنجی
class UserValidator {
static validateEmail(email) {
return email.includes('@');
}
}

// ۳. سرویس ذخیره‌سازی (Persistance)
class UserRepository {
save(user) {
console.log(`Saving ${user.name} to Database...`);
}
}

// ۴. سرویس نمایش (UI/Presentation)
class UserView {
renderProfile(user) {
return `<div>User: ${user.name}</div>`;
}
}

#### 🚀 چرا این سبک کدنویسی برای شما مهم است؟
۱. تست‌پذیری: تست کردن یک تابع کوچک که فقط یک کار انجام می‌دهد، بسیار راحت‌تر است.
۲. کاهش باگ: وقتی تغییری در بخش دیتابیس ایجاد می‌کنید، خیالتان راحت است که بخش UI خراب نمی‌شود.
۳. کار تیمی: در پروژه‌های بزرگ (مثل پروژه‌های درس آزمایشگاه مهندسی نرم‌افزار)، هر کس می‌تواند روی یک بخش مستقل کار کند.

---
#برنامه_نویسی #مهندسی_نرم_افزار #CleanCode #SOLID #WebDevelopment #شب_تاب

@init_code هزاران آموزش برنامه نویسی