وقت بخیر دوستان.
من یه وبسایت todo نوشتم که کاربر میاد یه سری وظایف رو با زمان و دوره (روزانه، هفتگی و ماهانه) ایجاد میکنه. وب سرویسش رو هم نوشتم و درکل مشکلی وجود نداره. ولی کدم حرفه ای نیست.
یه مثال میزنم: توی بخش ثبت یه وظیفه، چون وظایف نباید تداخل زمانی داشته باشن، توی کنترلر توی تابع مربوط به ثبت وظیفه ( مثلا createTodo) میاد و زمان و دوره رو با بقیه وظایف کاربر چک میکنه که تداخل نداشته باشن. بدلیل یه سری پیچیدگی ها و یه سری موارد اضافه برای چک کردن و وجود حالات مختلف، این بخش کد ممکنه حدود 200-300 خط کد بشه.
حالا ثبت وظیفه هم توی کنترلر مربوط به کاربر هست هم کنترلر مربوط به مدیر(مدیر هم میتونه واسه کاربرا ثبت وظیفه انجام بده) و هم توی کنترلر مربوط به وب سرویس. و خب این بخش از کد توی همش یکسانه و تکراری.
حالا به اینا متدهای ویرایش (update) رو هم اضافه کنید. میبینید که یه تکه کد یکسان 200-300 خطی شش بار باید تکرار بشه.
کد بخواد حرفه ای و قابل توسعه باشه، باید این بخش از کد بره توی یه متد توی "مدل". درسته ؟؟ که هر سه کنترلر بتونن بهش دسترسی داشته باشن و فقط هم یه بار نوشته بشه.
بطور کلی کدوم بخش از کدها باید برن توی یه متد جدید توی "مدل"؟ فقط اونایی که ممکنه چندجا نیاز باشن؟
و کدوم بخش از کدها باید توی یه متد جداگانه توی همون کنترلر باشن؟
آیا این حرف درسته: اگه کد قراره فقط توی همون کنترلر استفاده بشه پس بره به یه متد توی همون کنترلر و اگه ممکنه توی کنترلرهای دیگه هم استفاده بشه بره توی یه متد توی مدل ؟؟؟
تا چه حد باید این جداسازی کدها توی متدهای جداگانه باید پیش بره؟
ممنون میشم دوستان اگه میتونن یه توضیحی بدن یا اینکه لینک مرتبط بفرستن.
اینجور سوالات خیلی زیاد و کلیشه ای هستن. شما باید یکسری قوانین رو رعایت کنید تا کد نسبتا خوبی داشته باشید. این قوانین به صورت زیر هستن
@ali.bayat
انتقال کد به trait موقعیت خاصی داره. خیلی جاها بهتره از abstract class استفاده کرد! استفاده درست از مفاهیم نیازمند درک اصول برنامه نویسی هست که نمیشه اون رو با سوال پرسیدن یا صرفا توضیح دادن در قالب سوال و جواب مطرح کرد. استفاده نادرست از ساختار های زبان برنامه نویسی تنها پیچیدگی برنامه رو بالا میبره.
درسته اما کلاسهای Abstract هم محدودیتهای خودشون رو به همراه دارند.
خیلی از برنامهنویس ها با تریت میونه خوبی ندارند و معتقدند استفاده از تریت مثل این میمونه که شما آشغالهارو به زیر فرش جارو کنی... اما خوب در بعضی شرایط میشه از شلوغی الکی پرهیز کرد.
سلام
@smartgarden2016
partial کردن کد ها رو اگر به درستی انجام بدید خب خیلی خوبه
یه قطعه کدی که قرار هست توی 10 جا تکرار شه ، خب اینو میشه به صورت trait پیاده سازی کرد و جاهای مختلف ازش استفاده کرد
همونطور یکه دوستان گفتند
اما خب حس میکنم کدتون خیلی پراکنده و شلوغ پلوغ هست!
پیشنهاد میکنم اون چه که میدونید مهم هست و همه جا استفاده میشه رو
جدا کنید که از تکرار کد جلوگیری شه
@khanzadimahdi
@ali.bayat
@Alimotreb
ممنونم دوستان
@Alimotreb
والا چون کلا یه مقدار پیچیدگی بالاس و حالات مختلف پیش اومده کلا حجم کنترلرها بالاس و حتی حجم بعضی متدها به 300-400 خط هم میرسه.
پس فکر کنم به طور کلی بهتره اون کدهایی که چندجا استفاده میشن رو توی trait بنویسم و اون کدهایی که فقط توی همون کنترلر هستن رو تا جایی که میشه جداکنم و توی متدهای جدا توی همون کنترلر بنویسم و استفاده کنم.
تشکر از همگی.
برای تمیزکردن کدها و مرتب کردنشون خیلی کارها هست که میتونید انجام بدید مثلا استفاده از
این مفاهیم رو معادل های فارسی خوبی براشون پیدا نکردم اما رعایتشون باعث میشه شما کدنویس خوبی باشید و با استانداردها پیش برید
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟