Forwarded from PGTWEET | توییت برنامه نویسی
SOLID چیه و چه کاربردی داره؟ 🦦
SOLID یک مجموعه اصول طراحی شیءگرا هست که به توسعهدهندگان کمک میکنه تا کدهای قابل فهم، قابل نگهداری و انعطافپذیر بنویسن. این اصول توسط Robert C. Martin معرفی شده و شامل پنج اصل مهم هست:
1⃣ Single Responsibility Principle (SRP) هر کلاس یا ماژول باید تنها یک وظیفه مشخص داشته باشه. این اصل کمک میکنه تا کدها سادهتر و قابل درکتر بشن.
2⃣ Open/Closed Principle (OCP) کلاسها و ماژولها باید برای توسعه باز و برای تغییر بسته باشن. این به این معنیه که باید بتونیم بدون تغییر در کد اصلی، ویژگیهای جدید اضافه کنیم.
3⃣ Liskov Substitution Principle (LSP) هر کلاسی که از کلاس دیگهای ارثبری میکنه باید بتونه به جای کلاس پایه استفاده بشه، بدون اینکه رفتار برنامه خراب بشه.
4⃣ Interface Segregation Principle (ISP) به جای ایجاد اینترفیسهای بزرگ و همهکاره، باید اینترفیسهای کوچک و اختصاصی ایجاد کنیم که فقط متدهای مربوط به خودشون رو داشته باشن.
5⃣ Dependency Inversion Principle (DIP) ماژولهای سطح بالا نباید به ماژولهای سطح پایین وابسته باشن. هر دو باید به آبسترکشنها وابسته باشن. این اصل کمک میکنه تا وابستگیها بهتر مدیریت بشن و کدها قابل تستتر باشن.
برخی از مزایای اصول SOLID⬇️
🔵 کاهش پیچیدگی کد
🔵 افزایش قابلیت نگهداری
🔵 تسهیل در تستپذیری
🔵 بهبود قابلیت توسعه
همچنین برای استفاده از اصول SOLID، میتونید از ابزارها و فریمورکهای مختلفی که این اصول رو تسهیل میکنن، استفاده کنید⬇️
Spring: یک فریمورک جامع برای توسعه برنامههای جاوا که بسیاری از اصول SOLID رو پیادهسازی میکنه.
Angular: یک فریمورک برای ساخت اپلیکیشنهای وب که به شما کمک میکنه تا اصول SOLID رو در برنامههای خود پیادهسازی کنید.
Django: یک فریمورک برای توسعه وب با زبان پایتون که با پیادهسازی اصول SOLID به بهبود ساختار کد کمک میکنه.
همچنین شرکتهای بزرگی مثل گوگل و فیسبوک، از اصول SOLID استفاده میکنن تا بتونن پروژههای بزرگ و پیچیده خودشون رو به صورت یکپارچه و کارآمد مدیریت کنن.
#vesal
🤘 PgTwEeT | توییت برنامه نویسی
SOLID یک مجموعه اصول طراحی شیءگرا هست که به توسعهدهندگان کمک میکنه تا کدهای قابل فهم، قابل نگهداری و انعطافپذیر بنویسن. این اصول توسط Robert C. Martin معرفی شده و شامل پنج اصل مهم هست:
برخی از مزایای اصول SOLID
همچنین برای استفاده از اصول SOLID، میتونید از ابزارها و فریمورکهای مختلفی که این اصول رو تسهیل میکنن، استفاده کنید
Spring: یک فریمورک جامع برای توسعه برنامههای جاوا که بسیاری از اصول SOLID رو پیادهسازی میکنه.
Angular: یک فریمورک برای ساخت اپلیکیشنهای وب که به شما کمک میکنه تا اصول SOLID رو در برنامههای خود پیادهسازی کنید.
Django: یک فریمورک برای توسعه وب با زبان پایتون که با پیادهسازی اصول SOLID به بهبود ساختار کد کمک میکنه.
همچنین شرکتهای بزرگی مثل گوگل و فیسبوک، از اصول SOLID استفاده میکنن تا بتونن پروژههای بزرگ و پیچیده خودشون رو به صورت یکپارچه و کارآمد مدیریت کنن.
#vesal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2
در لاراول میتونیم با استفاده از متود destroy اقدام به حذف یک یا حتی چند رکورد بر اساس primary key کنیم.
این متود به شکل های مختلفی قابل فراخوانیه.(در تصویر بهش اشاره شده)
همچنین سادگیه استفاده ازش میتونه بر خوانایی کدتون تاثیر مثبت بزاره.✔️
#Laravel
@GoldenCodeir
(به منبع و مثالش توجه کنید👇🏾)
https://x.com/OussamaMater/status/1809663607573230056?s=35
این متود به شکل های مختلفی قابل فراخوانیه.(در تصویر بهش اشاره شده)
همچنین سادگیه استفاده ازش میتونه بر خوانایی کدتون تاثیر مثبت بزاره.✔️
#Laravel
@GoldenCodeir
(به منبع و مثالش توجه کنید👇🏾)
https://x.com/OussamaMater/status/1809663607573230056?s=35
X (formerly Twitter)
OussamaMater (@OussamaMater) on X
Laravel Tip💡: Delete (Destroy) Records
Did you know that Laravel ships with the "destroy" method, which allows you to delete records by their primary key? 🚀
#laravel
Did you know that Laravel ships with the "destroy" method, which allows you to delete records by their primary key? 🚀
#laravel
👍6❤3🔥1
Forwarded from CleverDevs (Mammad)
-اصل Don't Be Cute در کلین کد
این اصل میگه موقع نامگذاری متغیر هات بامزه بازی در نیار
اگه اسم ها خیلی خفن باشن فقط کسایی که متوجهش میشن که حس شوخی نویسنده کد رو میدونن و همینا هم به سختی متوجه جوک میشن
ممکنه کسایی که کد رو میخونن بدونن
همیشه واضح بودن رو به سرگرم کننده بودن ترجیح بدید
بامزگی توی کد اغلب کد رو به شکل عامیانه و محاوره ای نشون میده مثلا از
#CleanCode
@CleverDevs - @CleverDevsGp
این اصل میگه موقع نامگذاری متغیر هات بامزه بازی در نیار
اگه اسم ها خیلی خفن باشن فقط کسایی که متوجهش میشن که حس شوخی نویسنده کد رو میدونن و همینا هم به سختی متوجه جوک میشن
ممکنه کسایی که کد رو میخونن بدونن
HolyHandGrenade به چی اشاره میکنه. درسته اسم بامزه ایه ولی DeleteItems اسم بهتریه همیشه واضح بودن رو به سرگرم کننده بودن ترجیح بدید
بامزگی توی کد اغلب کد رو به شکل عامیانه و محاوره ای نشون میده مثلا از
whack به جای kill استفاده نکنید یا مثلا جوکی نزارید که تو وابسته به فرهنگی باشه مثلا از eatMyShorts به جای abort استفاده نکنید Say What you mean , Mean what you say
#CleanCode
@CleverDevs - @CleverDevsGp
👍6🔥1
در لاراول با استفاده از متود ()isDirty میتونیم بررسی کنیم که یک یا حتی چند attribute از زمان آخرین بازیابی که انجام دادیم تغییر کردن یا نه،
حالا یعنی چی؟؟
فرض کنین میخواید بررسی کنین نام کاربری که درخواست ورود داده نسبت به دفعه ی قبلیش که وارد شده تغییر کرده یا نه، اینجا میشه ازین متود کمک گرفت.
در مثال زیر حالت های مختلفی که نتیجش true یا false میشه بررسی شده.
#Laravel
@GoldenCodeir
(به منبع و مثالش توجه کنید👇🏾)
https://x.com/OussamaMater/status/1807859649770643832?s=35
حالا یعنی چی؟؟
فرض کنین میخواید بررسی کنین نام کاربری که درخواست ورود داده نسبت به دفعه ی قبلیش که وارد شده تغییر کرده یا نه، اینجا میشه ازین متود کمک گرفت.
در مثال زیر حالت های مختلفی که نتیجش true یا false میشه بررسی شده.
#Laravel
@GoldenCodeir
(به منبع و مثالش توجه کنید👇🏾)
https://x.com/OussamaMater/status/1807859649770643832?s=35
👍2❤1🔥1
در لاراول به راحتی میتونیم ویژگی های داینامیک رو به مدلمون اضافه کنیم .
در واقع این ویژگی هارو در دیتابیس تعریف نکردیم و نیاز به تغییر ساختار دیتابیس برای اضافه کردنشان نداریم.
درین حالت میتونیم براشون مقدار پیشفرض نیز مشخص کنیم.
در مثال زیر داخل مدل Media ، به راحتی فرایند دسترسی به url پیاده سازی شده.(بدونه درنظر گرفتن ستونی خاص در دیتابیس)
#Laravel
#لاراول
@GoldenCodeir
(به منبع و مثالش توجه کنید 👇🏾)
https://x.com/laravelbackpack/status/1807738434305531922?s=35
در واقع این ویژگی هارو در دیتابیس تعریف نکردیم و نیاز به تغییر ساختار دیتابیس برای اضافه کردنشان نداریم.
درین حالت میتونیم براشون مقدار پیشفرض نیز مشخص کنیم.
در مثال زیر داخل مدل Media ، به راحتی فرایند دسترسی به url پیاده سازی شده.(بدونه درنظر گرفتن ستونی خاص در دیتابیس)
#Laravel
#لاراول
@GoldenCodeir
(به منبع و مثالش توجه کنید 👇🏾)
https://x.com/laravelbackpack/status/1807738434305531922?s=35
X (formerly Twitter)
Backpack for Laravel (@laravelbackpack) on X
#Laravel Tip
Did you know... you can append dynamic attributes to your model? Here's how you can do it👇
Did you know... you can append dynamic attributes to your model? Here's how you can do it👇
❤3🔥2
Forwarded from CleverDevs (Mammad)
-اصل Use Searchable Names در کلین کد
اسامی تک کارکتری یا داری عدد یه مشکل خاص دارن اونم اینه که نمیشه بین کد ها سرچشون کرد و پیداشون کرد مثلا شما میتونید MAX_CLASSES_PER_STUDENT رو به راحتی بین کد ها پیدا کنید اما برای پیدا کردن عدد 7 مشکلات بیشتری دارید.
در این صورت ممکنه وقتی سرچ میکنید بره اون تیکه کلمه هارو بین اسم فایلا یا ... جستجو کنه مثلا اسم متغیر رو گذاشین A و کلی فایل دارین که A توش هست و وقتی سرچ میکنید دردسر دارید پس از اسمی استفاده کنید که بشه سرچش کرد.
البته اینم بگم که از متغیر های تک کلمه ای میشه تو اسکوپ های کوچیک استفاده کرد مثلا وقتی for loop میزنید منطقیه که از i یا j استفاده کنید.
#CleanCode
@CleverDevs
@CleverDevsGp
اسامی تک کارکتری یا داری عدد یه مشکل خاص دارن اونم اینه که نمیشه بین کد ها سرچشون کرد و پیداشون کرد مثلا شما میتونید MAX_CLASSES_PER_STUDENT رو به راحتی بین کد ها پیدا کنید اما برای پیدا کردن عدد 7 مشکلات بیشتری دارید.
در این صورت ممکنه وقتی سرچ میکنید بره اون تیکه کلمه هارو بین اسم فایلا یا ... جستجو کنه مثلا اسم متغیر رو گذاشین A و کلی فایل دارین که A توش هست و وقتی سرچ میکنید دردسر دارید پس از اسمی استفاده کنید که بشه سرچش کرد.
البته اینم بگم که از متغیر های تک کلمه ای میشه تو اسکوپ های کوچیک استفاده کرد مثلا وقتی for loop میزنید منطقیه که از i یا j استفاده کنید.
#CleanCode
@CleverDevs
@CleverDevsGp
👍3🔥2😁1
Forwarded from Curious Geek ⚡️
❗️Your Code smells
❗️کد هات بو میده
یکی از اصطلاحات مهندسی نرم افزار که خیلی کاربردی هستش. وقتی شرایط زیر پیش میاد کد هاتون بو میده
1⃣ Long Method
متدی است که دارای خطوط زیادی کد بوده و چندین وظیفه را به عهده دارد. این که دقیقا چه متدی طولانی است قابل بحث است و تا حدودی به زبان برنامه نویسی بستگی دارد، اما عدم رعایت اصل single responsibility باعث بودار شدن کد میشه
2⃣ Long parameter list
تعداد پارامترهای زیاد یک متد یا تابع برای بلند مدت کد رو بودار میکنه. تا حدی عامل این موضوع همون مورد 1⃣ هستش ولی اگر نیاز به پارامتر های زیادی داشتیم میتونیم اون ها رو توی یک آبجکت بزاریم
3⃣ Don't repeat yourself
یکی از مشکلاتی که در دراز مدت ایجاد میشه تکرار کد ها در طول توسعه برنامه هست. باید این کد ها رو استخراج کنیم و منطق های تکراری رو تبدیل به متد یا تابع کنیم
4⃣ Dead code
کد هایی دیگه به هر دلیلی توی پروژه کاربردی ندارن رو جای کامنت کردن پاک کنیم. شاید بعداً به کارمون بیان ، خب ورژن کنترلر هایی مثل گیت برای همین ساخته شدن دیگه :)
5⃣ Select good variable names
موقعی که اسم متغیر ها رو انتخاب میکنیم ، سعی کنیم طوری باشه که بشه کاربرد اون متغیر رو از اسم اش متوجه شد
راستی اینا رو از یک ویدئو فارسی توی یوتیوب یاد گرفتم. از این لینک میتونید ویدئو اصلی رو ببینید
🌐 https://bit.ly/3LkXwc0
🆔 @Hiradsajde
❗️کد هات بو میده
یکی از اصطلاحات مهندسی نرم افزار که خیلی کاربردی هستش. وقتی شرایط زیر پیش میاد کد هاتون بو میده
1⃣ Long Method
متدی است که دارای خطوط زیادی کد بوده و چندین وظیفه را به عهده دارد. این که دقیقا چه متدی طولانی است قابل بحث است و تا حدودی به زبان برنامه نویسی بستگی دارد، اما عدم رعایت اصل single responsibility باعث بودار شدن کد میشه
2⃣ Long parameter list
تعداد پارامترهای زیاد یک متد یا تابع برای بلند مدت کد رو بودار میکنه. تا حدی عامل این موضوع همون مورد 1⃣ هستش ولی اگر نیاز به پارامتر های زیادی داشتیم میتونیم اون ها رو توی یک آبجکت بزاریم
3⃣ Don't repeat yourself
یکی از مشکلاتی که در دراز مدت ایجاد میشه تکرار کد ها در طول توسعه برنامه هست. باید این کد ها رو استخراج کنیم و منطق های تکراری رو تبدیل به متد یا تابع کنیم
4⃣ Dead code
کد هایی دیگه به هر دلیلی توی پروژه کاربردی ندارن رو جای کامنت کردن پاک کنیم. شاید بعداً به کارمون بیان ، خب ورژن کنترلر هایی مثل گیت برای همین ساخته شدن دیگه :)
5⃣ Select good variable names
موقعی که اسم متغیر ها رو انتخاب میکنیم ، سعی کنیم طوری باشه که بشه کاربرد اون متغیر رو از اسم اش متوجه شد
راستی اینا رو از یک ویدئو فارسی توی یوتیوب یاد گرفتم. از این لینک میتونید ویدئو اصلی رو ببینید
🌐 https://bit.ly/3LkXwc0
🆔 @Hiradsajde
YouTube
Code Smells - آیا کد شما هم بو میده؟
یکی از موضوعات مهم مهندسی نرمافزار و کدنویسی تمیز، پرهیز از مواردی است که اصطلاحا کد را کثیف خواهند کرد و در غالب طنز میگویم کد بو میدهد
به این موارد code smells گفته میشود
در این ویدئو علاوه بر مطرح کردن پنج مورد از این موارد و عوارض آنها، به راهکارهای…
به این موارد code smells گفته میشود
در این ویدئو علاوه بر مطرح کردن پنج مورد از این موارد و عوارض آنها، به راهکارهای…
❤5💯1
Forwarded from Pishro App
نسخه 8.4 php قراره 21 نوامبر ۲۰۲۴ بطور رسمی منتشر بشه
نسخه Alpha 1 از php 8.4 رو از اینجا میتونید ببینید و برای تست دانلود کنید
https://www.php.net/archive/2024.php#2024-07-05-1
#php
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
در لاراول متود های chopStart و chopEnd بسیار مفیدن زیرا به ما این قابلیت رو میده تا بتونیم از ابتدا یا انتهای یک رشته اقدام به پاک کردن کارکتر مدنظر کنیم.
یعنی چی؟
به مثال یک (chopStart)نگاه کنین، اگر در ابتدای این رشته، کارکتر هایی که تعیین شدن وجود داشته باشن حذف خواهند شد.✔️
(این متود ها از نسخه ۱۱.۱۴ در دسترسن)
#Laravel
#لاراول
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/OussamaMater/status/1812576667313066137?s=19
یعنی چی؟
به مثال یک (chopStart)نگاه کنین، اگر در ابتدای این رشته، کارکتر هایی که تعیین شدن وجود داشته باشن حذف خواهند شد.✔️
(این متود ها از نسخه ۱۱.۱۴ در دسترسن)
#Laravel
#لاراول
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/OussamaMater/status/1812576667313066137?s=19
X (formerly Twitter)
OussamaMater (@OussamaMater) on X
Laravel Tip💡: The New "chopStart" and "chopEnd" Methods
Laravel 11.14 introduces 2 new string helpers that allow you to remove characters from the beginning or end of a string 🚀
#laravel
Laravel 11.14 introduces 2 new string helpers that allow you to remove characters from the beginning or end of a string 🚀
#laravel
👍3❤2
Forwarded from یک برنامه نویس تنبل (Raymond Dev)
🔶 در لاراول، Boolean Query به شما این امکان را میدهند که با استفاده از شرایط منطقی مختلف، دادهها را از دیتابیس فیلتر کنید.
1. استفاده از شرط where
استفاده از شرطهای where برای فیلتر کردن دادهها با شرایط مختلف:
2. استفاده از orWhere
استفاده از orWhere برای اضافه کردن شرطهای منطقی OR به کوئری:
3. استفاده از whereBetween
استفاده از whereBetween برای فیلتر کردن دادهها با محدوده مقادیر:
4. استفاده از whereIn
استفاده از whereIn برای فیلتر کردن دادهها بر اساس مجموعهای از مقادیر:
5. استفاده از whereNull و whereNotNull
استفاده از whereNull و whereNotNull برای فیلتر کردن دادهها بر اساس مقادیر null:
6. استفاده از whereExists
استفاده از whereExists برای بررسی وجود رکوردهای مرتبط در یک ساب کوئری:
7. استفاده از توابع when
استفاده از when برای اعمال شرایط به صورت داینامیک:
8. ترکیب شرطهای مختلف
ترکیب چندین شرط با استفاده از گروهبندی توابع:
#لاراول
@TheRaymondDev
1. استفاده از شرط where
استفاده از شرطهای where برای فیلتر کردن دادهها با شرایط مختلف:
$users = DB::table('users')->where('name', 'John')->get();2. استفاده از orWhere
استفاده از orWhere برای اضافه کردن شرطهای منطقی OR به کوئری:
$users = DB::table('users')->where('name', 'John')->orWhere('name', 'Jane')->get();3. استفاده از whereBetween
استفاده از whereBetween برای فیلتر کردن دادهها با محدوده مقادیر:
$users = DB::table('users')->whereBetween('age', [20, 30])->get();4. استفاده از whereIn
استفاده از whereIn برای فیلتر کردن دادهها بر اساس مجموعهای از مقادیر:
$users = DB::table('users')->whereIn('id', [1, 2, 3])->get();5. استفاده از whereNull و whereNotNull
استفاده از whereNull و whereNotNull برای فیلتر کردن دادهها بر اساس مقادیر null:
$users = DB::table('users')->whereNull('email')->get();
$users = DB::table('users')->whereNotNull('email')->get();6. استفاده از whereExists
استفاده از whereExists برای بررسی وجود رکوردهای مرتبط در یک ساب کوئری:
$users = DB::table('users')
->whereExists(function ($query) {
$query->select(DB::raw(1))
->from('posts')
->whereRaw('posts.user_id = users.id');
})
->get();7. استفاده از توابع when
استفاده از when برای اعمال شرایط به صورت داینامیک:
$role = 'admin';
$users = DB::table('users')
->when($role, function ($query, $role) {
return $query->where('role', $role);
})
->get();
8. ترکیب شرطهای مختلف
ترکیب چندین شرط با استفاده از گروهبندی توابع:
$users = DB::table('users')
->where('status', 'active')
->where(function ($query) {
$query->where('name', 'John')
->orWhere('age', '>', 30);
})
->get();#لاراول
@TheRaymondDev
👍7❤4
در لاراول بعضی وقتا نیازه تا برخی از کلمات یا عبارت های موجود رو با عبارت های مدنظرمون جابجا کنیم تا تغییراتی که میخوایم اعمال شوند.
چجوری؟
📌 به مثال زیر توجه کنین، دو کلمه ازین جمله انتخاب شده(Tacos و Great) و عملیات جایگذاری رو با استفاده از متود ()swap اعمال کردیم, اکنون خروجی دارای تغییرات جدیدمون خواهد شد.( Burritos fantastic)
#لاراول
#Laravel
@GoldenCodeir
(به منبع و مثال دقت کنید👇🏾)
https://x.com/OussamaMater/status/1813313409443844221?t=M4HQZcZjhBALXUTQX83fxw&s=35
چجوری؟
📌 به مثال زیر توجه کنین، دو کلمه ازین جمله انتخاب شده(Tacos و Great) و عملیات جایگذاری رو با استفاده از متود ()swap اعمال کردیم, اکنون خروجی دارای تغییرات جدیدمون خواهد شد.( Burritos fantastic)
#لاراول
#Laravel
@GoldenCodeir
(به منبع و مثال دقت کنید👇🏾)
https://x.com/OussamaMater/status/1813313409443844221?t=M4HQZcZjhBALXUTQX83fxw&s=35
X (formerly Twitter)
OussamaMater (@OussamaMater) on X
Laravel Tip💡: Swap Multiple Strings
When working with strings, we often need to find and replace occurrences of multiple strings. Laravel ships with an elegant method "swap" to do exactly that 🚀
#laravel
When working with strings, we often need to find and replace occurrences of multiple strings. Laravel ships with an elegant method "swap" to do exactly that 🚀
#laravel
👍5
Forwarded from PGTWEET | توییت برنامه نویسی
سه اصل KISS ،YAGNI ،DRY در برنامه نویسی
🔵 اصل DRY
قانون DRY که مخفف dont repeat yourself هست، به معنای تکرار بیهوده نکردن کد میباشد. خلاصه و مفید بهتون بگم، یعنی کدوم بخش های برنامه مشابه هستن و سعی کنید با استفاده از کلاس ها و توابع، میزان استفاده از کدهای تکراری رو در پروژه به حداقل برسونید. هر چقدر از تکرار کد بیهوده بیشتر جلوگیری کنید، میزان زمان و هزینههای پشتیبانی خیلی کمتر میشه و مشکلات کمتری هم توی پروژه ایجاد میشه.
🔵 اصل KISS
این اصل مخفف Keep It Simple, Stupid هست و در این قاعده، ساده گرایی و پرهیز از پیچیدگی حرف اول رو میزنه. هرچقدر که کارها به واحدهای کوچک با فرآیندهای سادهتری تبدیل بشه، بازدهی افراد بیشتر میشه، میزان خطا کمتر میشه و پروژه موفق تر جلو میره. برای مثال کامپوننت های کوچیک بنویسیم، هر کامپوننت فقط یه کار مشخص رو انجام بده و ...
🔵 اصل YAGNI
اصل YAGNI که مخفف You Aren’t Gonna Need It هست، یک تمرین در توسعه نرم افزار هست که میگه ویژگی ها، فقط باید در صورت نیاز اضافه بشن. بحث اینه که توسعه دهندگان زمان خودشون رو برای ایجاد عناصر اضافی که ممکنه ضروری نباشن و باعث کند کردن روند توسعه هستن، تلف نکنن.
بطور خلاصه KISS, YAGNI, DRY سه اصل مهم در برنامه نویسی هستن که رعایت کردن اونها در نگهداری، تغییر و خوانایی کدهای پروژه در طولانی مدت بسیار تاثیرگذار میباشد.
#shahin
🤘 PgTwEeT | توییت برنامه نویسی
قانون DRY که مخفف dont repeat yourself هست، به معنای تکرار بیهوده نکردن کد میباشد. خلاصه و مفید بهتون بگم، یعنی کدوم بخش های برنامه مشابه هستن و سعی کنید با استفاده از کلاس ها و توابع، میزان استفاده از کدهای تکراری رو در پروژه به حداقل برسونید. هر چقدر از تکرار کد بیهوده بیشتر جلوگیری کنید، میزان زمان و هزینههای پشتیبانی خیلی کمتر میشه و مشکلات کمتری هم توی پروژه ایجاد میشه.
این اصل مخفف Keep It Simple, Stupid هست و در این قاعده، ساده گرایی و پرهیز از پیچیدگی حرف اول رو میزنه. هرچقدر که کارها به واحدهای کوچک با فرآیندهای سادهتری تبدیل بشه، بازدهی افراد بیشتر میشه، میزان خطا کمتر میشه و پروژه موفق تر جلو میره. برای مثال کامپوننت های کوچیک بنویسیم، هر کامپوننت فقط یه کار مشخص رو انجام بده و ...
اصل YAGNI که مخفف You Aren’t Gonna Need It هست، یک تمرین در توسعه نرم افزار هست که میگه ویژگی ها، فقط باید در صورت نیاز اضافه بشن. بحث اینه که توسعه دهندگان زمان خودشون رو برای ایجاد عناصر اضافی که ممکنه ضروری نباشن و باعث کند کردن روند توسعه هستن، تلف نکنن.
بطور خلاصه KISS, YAGNI, DRY سه اصل مهم در برنامه نویسی هستن که رعایت کردن اونها در نگهداری، تغییر و خوانایی کدهای پروژه در طولانی مدت بسیار تاثیرگذار میباشد.
#shahin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2💯2
در لاراول وقتی میخوایم یه مقدار رو از session بخونیم و بعدش اونو حذفش کنیم، میتونیم بجای استفاده از متود های()get و ()forget ، از متود ()pull استفاده کنیم.
استفاده ازش باعث میشه کد تمیزتر و کوتاه تر بشه.
📌 چجوری کار میکنه؟
طبق مثال زیر همزمان مقدار key رو از session میخونه و سپس حذفش میکنه.
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/OussamaMater/status/1814389905554022561?t=mOMUzlFBulYMC9lBlrbsvQ&s=19
استفاده ازش باعث میشه کد تمیزتر و کوتاه تر بشه.
📌 چجوری کار میکنه؟
طبق مثال زیر همزمان مقدار key رو از session میخونه و سپس حذفش میکنه.
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/OussamaMater/status/1814389905554022561?t=mOMUzlFBulYMC9lBlrbsvQ&s=19
X (formerly Twitter)
OussamaMater (@OussamaMater) on X
Laravel Tip💡: Retrieve and Delete Items From the Session
We often need to retrieve an item from the session and then delete it. While you can use the usual combo of get and forget, Laravel ships with the "pull" method that does exactly that 🚀
#laravel
We often need to retrieve an item from the session and then delete it. While you can use the usual combo of get and forget, Laravel ships with the "pull" method that does exactly that 🚀
#laravel
❤5👍1👏1
Forwarded from PGTWEET | توییت برنامه نویسی
۵ نکنه جهت بهبود عملکرد و سرعت وبسایت
عملکرد و سرعت بارگذاری وبسایت، یکی از مهمترین فاکتورهایی هست که تجربه کاربری و رتبهبندی در موتورهای جستجو رو تحت تاثیر قرار میده. در این پست، چند تا از استراتژیهای خفن و پرکاربرد برای بهینهسازی عملکرد در فرانتاند رو بررسی میکنیم.
1⃣ بهینهسازی تصاویر
تصاویر حجم زیادی از دادهها رو به خود اختصاص میدن. با فشردهسازی تصاویر و استفاده از فرمتهای مدرن مثل WebP، میتونید حجم صفحات خودتون رو کاهش بدید. همچنین میتونید از تگ
2⃣ استفاده از Lazy Loading
بارگذاری تنبل (Lazy Loading) به شما این امکان رو میده که تصاویر و ویدئوها تنها زمانی بارگذاری بشن، که کاربر به اونها اسکرول کنه و این باعث کاهش زمان بارگذاری اولیه میشه. این ویژگی در HTML5 پشتیبانی میشه و نیازی به پلاگینهای اضافی نیست:
3⃣ کاهش درخواستهای HTTP
با ترکیب فایلهای CSS و JavaScript و استفاده از ابزارهایی مثل Webpack، میتونید تعداد درخواستهای HTTP رو کاهش بدید. همچنین میتونید از فشردهسازی فایلها با gzip یا Brotli استفاده کنید تا حجم فایلها کاهش پیدا کنه.
4⃣ استفاده از Content Delivery Network (CDN)
CDN به شما کمک میکنه تا محتوا رو از نزدیکترین سرور به کاربر ارائه بدید، که باعث کاهش زمان بارگذاری و افزایش مقیاسپذیری وبسایت میشه:
5⃣ بهینهسازی فایلهای CSS و JavaScript
با استفاده از ابزارهایی مثل UglifyJS و CSSNano، میتونید کدهای خودتون رو بهینه و حجم فایلها رو کاهش بدید. همچنین میتونید از ابزارهای مدرنی مثل Terser برای جاوااسکریپت و PostCSS برای CSS استفاده کنید:
بهینهسازی عملکرد، یکی از مهمترین جنبههای توسعه وبسایتهای حرفهای و مدرن هست. امیدوارم از این پست لذت برده باشید 😀
#vesal
🤘 PgTwEeT | توییت برنامه نویسی
عملکرد و سرعت بارگذاری وبسایت، یکی از مهمترین فاکتورهایی هست که تجربه کاربری و رتبهبندی در موتورهای جستجو رو تحت تاثیر قرار میده. در این پست، چند تا از استراتژیهای خفن و پرکاربرد برای بهینهسازی عملکرد در فرانتاند رو بررسی میکنیم.
تصاویر حجم زیادی از دادهها رو به خود اختصاص میدن. با فشردهسازی تصاویر و استفاده از فرمتهای مدرن مثل WebP، میتونید حجم صفحات خودتون رو کاهش بدید. همچنین میتونید از تگ
<picture> برای پشتیبانی بهتر مرورگرها استفاده کنید:<picture>
<source srcset="image.webp" type="image/webp">
<img src="image.jpg" alt="PgTwEeT">
</picture>
بارگذاری تنبل (Lazy Loading) به شما این امکان رو میده که تصاویر و ویدئوها تنها زمانی بارگذاری بشن، که کاربر به اونها اسکرول کنه و این باعث کاهش زمان بارگذاری اولیه میشه. این ویژگی در HTML5 پشتیبانی میشه و نیازی به پلاگینهای اضافی نیست:
<img src="image.jpg" loading="lazy" alt="PgTwEeT">
با ترکیب فایلهای CSS و JavaScript و استفاده از ابزارهایی مثل Webpack، میتونید تعداد درخواستهای HTTP رو کاهش بدید. همچنین میتونید از فشردهسازی فایلها با gzip یا Brotli استفاده کنید تا حجم فایلها کاهش پیدا کنه.
CDN به شما کمک میکنه تا محتوا رو از نزدیکترین سرور به کاربر ارائه بدید، که باعث کاهش زمان بارگذاری و افزایش مقیاسپذیری وبسایت میشه:
با استفاده از ابزارهایی مثل UglifyJS و CSSNano، میتونید کدهای خودتون رو بهینه و حجم فایلها رو کاهش بدید. همچنین میتونید از ابزارهای مدرنی مثل Terser برای جاوااسکریپت و PostCSS برای CSS استفاده کنید:
// Example using UglifyJS
const UglifyJS = require("uglify-js");
const result = UglifyJS.minify("function add(a, b) { return a + b; }");
console.log(result.code);
#vesal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤1
در لاراول ، بسته به محیطی که برنامه داخلش اجرا میشه ممکنه نیاز بشه عملیات های مشخصی رو فعال یا غیر فعال کنیم .
مثلا کانفیگ های مربوط به دیباگ پروژه نباید در محیط production فعال باشه (مشکل امنیتی میسازه).
📌 دو متود با نام های isProduction و isLocal در اختیارمون هست که میتونیم به راحتی بررسی کنیم آیا برنامه در محیط local هست یا production تا عملیات مورد نیاز برای محیط مدنظر اجرا بشه.
#لاراول
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/OussamaMater/status/1815461812457935220?t=1ATZevlJa5FeR5AP6aKVRw&s=35
مثلا کانفیگ های مربوط به دیباگ پروژه نباید در محیط production فعال باشه (مشکل امنیتی میسازه).
📌 دو متود با نام های isProduction و isLocal در اختیارمون هست که میتونیم به راحتی بررسی کنیم آیا برنامه در محیط local هست یا production تا عملیات مورد نیاز برای محیط مدنظر اجرا بشه.
#لاراول
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/OussamaMater/status/1815461812457935220?t=1ATZevlJa5FeR5AP6aKVRw&s=35
X (formerly Twitter)
OussamaMater (@OussamaMater) on X
Laravel Tip💡: Check Your Application Environment
We often need to check the application environment. While you can use the environment method to do so, Laravel ships with elegant methods "isProduction" and "isLocal" to do exactly that 🚀
#laravel
We often need to check the application environment. While you can use the environment method to do so, Laravel ships with elegant methods "isProduction" and "isLocal" to do exactly that 🚀
#laravel
👍7❤1
Forwarded from Anophel | آنوفل
در لاراول دیزاین پترن Repository برای جداسازی لایه دسترسی به دادهها از لایه منطقی استفاده میشود. این پترن به توسعهدهندگان اجازه میدهد تا با استفاده از یک واسط مشترک به دادههای مختلف دسترسی پیدا کنند و تغییرات در لایه داده را بدون تأثیر بر لایه منطقی مدیریت کنند.
دیزاین پترن Repository در لاراول از سه بخش اصلی تشکیل شده است:
اینترفیس Repository: این اینترفیس متد هایی را تعریف میکند که برای تعامل با مکانیسم ذخیرهسازی داده استفاده میشوند. این یک لایه آبسترک بین کد برنامه و دیتابیس فراهم می کند.
کلاس Repository: این کلاس اینترفیس Repository را پیادهسازی میکند و شامل اجرای واقعی متد های تعریف شده در اینترفیس است. برای انجام عملیات CRUD (ایجاد، خواندن، بهروزرسانی و حذف) با مکانیسم ذخیرهسازی داده تعامل دارد.
کلاس سرویس: این کلاس از کلاس Repository برای انجام عملیات لاجیک استفاده می کند. به عنوان یک واسطه بین Controller و Repository عمل می کند و لایه ای از آبسترک را بین لایه ارائه و لایه ذخیره سازی داده ارائه می دهد.
مزایای استفاده از Repository
1. جداسازی نگرانیها (Separation of Concerns): لایه منطقی از جزئیات دسترسی به دادهها جدا میشود.
2.قابلیت تست بهتر: با جدا کردن منطق تجاری از منطق دسترسی به دادهها، تست واحد آسانتر میشود.
3. مدیریت بهتر تغییرات: تغییرات در ساختار دادهها یا منبع داده به سادگی مدیریت میشود.
خلاصه کلام
استفاده از الگوی Repository در لاراول مزایای متعددی دارد از جمله جداسازی نگرانیها، قابلیت تست بهتر، و مدیریت سادهتر تغییرات. این پترن شامل تعریف اینترفیس ها، پیادهسازی آنها در کلاسهای Repository و ثبت آنها در سرویس پراوایدر است.
Anophel آنوفل
#لاراول #دیزاین_پترن #laravel #design_pattern
دیزاین پترن Repository در لاراول از سه بخش اصلی تشکیل شده است:
اینترفیس Repository: این اینترفیس متد هایی را تعریف میکند که برای تعامل با مکانیسم ذخیرهسازی داده استفاده میشوند. این یک لایه آبسترک بین کد برنامه و دیتابیس فراهم می کند.
کلاس Repository: این کلاس اینترفیس Repository را پیادهسازی میکند و شامل اجرای واقعی متد های تعریف شده در اینترفیس است. برای انجام عملیات CRUD (ایجاد، خواندن، بهروزرسانی و حذف) با مکانیسم ذخیرهسازی داده تعامل دارد.
کلاس سرویس: این کلاس از کلاس Repository برای انجام عملیات لاجیک استفاده می کند. به عنوان یک واسطه بین Controller و Repository عمل می کند و لایه ای از آبسترک را بین لایه ارائه و لایه ذخیره سازی داده ارائه می دهد.
مزایای استفاده از Repository
1. جداسازی نگرانیها (Separation of Concerns): لایه منطقی از جزئیات دسترسی به دادهها جدا میشود.
2.قابلیت تست بهتر: با جدا کردن منطق تجاری از منطق دسترسی به دادهها، تست واحد آسانتر میشود.
3. مدیریت بهتر تغییرات: تغییرات در ساختار دادهها یا منبع داده به سادگی مدیریت میشود.
خلاصه کلام
استفاده از الگوی Repository در لاراول مزایای متعددی دارد از جمله جداسازی نگرانیها، قابلیت تست بهتر، و مدیریت سادهتر تغییرات. این پترن شامل تعریف اینترفیس ها، پیادهسازی آنها در کلاسهای Repository و ثبت آنها در سرویس پراوایدر است.
Anophel آنوفل
#لاراول #دیزاین_پترن #laravel #design_pattern
Anophel
Anophel | Where Developers Create Their Own Path
Anophel is an ecosystem for developers—a place for those who prefer building over consuming. If you want to create tools, think differently, and forge your own path in coding, Anophel is with you.
❤5👍1👏1
در لاراول ، با استفاده از هوک passedValidation در form request میتونیم دیتای اعتبار سنجی شده رو پیش از ارسال به کنترلر تغییر بدیم.
به این ترتیب با این روش میتونیم دیتا رو طبق استانداردهایی که در نظر داریم اصلاح کنیم.
📌 در مثال زیر، تغییراتی که میخواستیم بر فیلد name اعمال شد تا در نهایت خروجیه استانداردی برای نمایش داشته باشیم.
#لاراول
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/OussamaMater/status/1815852488941080859?s=35
به این ترتیب با این روش میتونیم دیتا رو طبق استانداردهایی که در نظر داریم اصلاح کنیم.
📌 در مثال زیر، تغییراتی که میخواستیم بر فیلد name اعمال شد تا در نهایت خروجیه استانداردی برای نمایش داشته باشیم.
#لاراول
#Laravel
@GoldenCodeir
(به منبع و مثالش دقت کنید👇🏾)
https://x.com/OussamaMater/status/1815852488941080859?s=35
X (formerly Twitter)
OussamaMater (@OussamaMater) on X
Laravel Tip💡: Normalize Validated Data
Have you ever needed to normalize the validated data before using it? Laravel Form Requests come with a "passedValidation" hook which allows you to tweak the validated data 🚀
#laravel
Have you ever needed to normalize the validated data before using it? Laravel Form Requests come with a "passedValidation" hook which allows you to tweak the validated data 🚀
#laravel
👍5❤3🔥1
Forwarded from یک برنامه نویس تنبل (Raymond Dev)
🔶 چالش لاراولی :
برای پکیچ Lame ورود موبایلی نوشتم اما هنگامی که با موبایل وارد می شوید و کد ورود را می زنید, با صفحه وریفای ایمیل مواجه می شویم و در حالی که این صفحه برای موبایل نیست و ورود به موبایل نیاز به وریفای صفحه نیست.
چه راهکاری هست که هنگام ورود با موبایل Verify اجرا نکند؟
این کد روت پکیچ لاراول است :
https://github.com/Rayiumir/Lame/blob/main/src/Routes/auth.php
#لاراول
@TheRaymondDev
برای پکیچ Lame ورود موبایلی نوشتم اما هنگامی که با موبایل وارد می شوید و کد ورود را می زنید, با صفحه وریفای ایمیل مواجه می شویم و در حالی که این صفحه برای موبایل نیست و ورود به موبایل نیاز به وریفای صفحه نیست.
چه راهکاری هست که هنگام ورود با موبایل Verify اجرا نکند؟
این کد روت پکیچ لاراول است :
https://github.com/Rayiumir/Lame/blob/main/src/Routes/auth.php
#لاراول
@TheRaymondDev
GitHub
Lame/src/Routes/auth.php at main · Rayiumir/Lame
Laravel Authentication Mobile and Email. Contribute to Rayiumir/Lame development by creating an account on GitHub.
👍6❤1
با توجه به گزینه های زیر، با کدوم کد میتونیم در لاراول اقدام به ارسال یک ایمیل با استفاده از queue کنیم؟
Anonymous Quiz
20%
Mail::to('test@gmail.com')->send(new MyMail());
31%
Mail::to('test@gmail.com')->queue(new MyMail());
32%
Mail::dispatch('test@gmail.com')->sendEmailJob(new MyMail());
17%
send(new SendEmailJob('test@gmail.com'));
❤4🔥1💯1
Forwarded from CleverDevs (Mahdi)
بجای اینکه از else if استفاده کنید (در بعضی شرایط) بهتره که از guard clauses استفاده کنید چون در این حالت کد خیلی خوانا تر و کوتاه تره.
#CleanCode Source
@CleverDevs
@CleverDevsGp
#CleanCode Source
@CleverDevs
@CleverDevsGp
👍16🔥2❤1👎1