جشنواره عیدانه راکت | عضویت ویژه راکت برای آخرین بار | افزایش قیمت‌ها از سال جدید | و ...

مشاهده اطلاعات بیشتر...
ثانیه
دقیقه
ساعت
روز
4 پاسخ

شکل درست کد نویسی

سلام من در حال کار روی پروژه تمرینی به آدرس زیر هستم :
https://didi.nikan-amlak.com/cat
در آدرس بالا وقتی تغییری ایجاد میکنیم، اطلاعات به شکل ایجکس به کنترل مربوطه ارسال و به شکل زیر پردازش میشن:
آیا این کدی که نوشتم بهینه هستش؟
آیا این شکل کد نویسی درست است؟

 protected function save(Request $request , Category $category)
    {

        foreach ($request['list'] as $key => $item)
        {

            if (isset($item['children'])) {

                $bet = Category::where('title', $item['name'])->doesntExist();

                $cat = Category::where('title', $item['name'])->first();
                $input['title'] = $item['name'];
                $input['slug'] = $item['slug'];
                $input['parent_id'] = '0';
                $input['position'] = $key;
                $input['display'] = $item['deleted'];
                $cat->update($input);

                foreach ($item['children'] as $key2 => $item2) {

                        $cat2 = Category::where('title', $item2['name'])->first();
                        $input['title'] = $item2['name'];
                        $input['slug'] = $item2['slug'];
                        $input['parent_id'] = $item['id'];
                        $input['position'] = $key2;
                        $input['display'] = $item2['deleted'];
                        $cat2->update($input);

                        if (isset($item2['children'])) {
                            foreach ($item2['children'] as $key3 => $item3) {

                                $cat3 = Category::where('title', $item3['name'])->first();
                                $input['title'] = $item3['name'];
                                $input['slug'] = $item3['slug'];
                                $input['parent_id'] = $item2['id'];
                                $input['position'] = $key3;
                                $input['display'] = $item3['deleted'];
                                $cat3->update($input);

                            }
                        }

                }
            }
            else {

                $cat = Category::where('title', $item['name'])->first();
                $input['title'] = $item['name'];
                $input['slug'] = $item['slug'];
                $input['parent_id'] = '0';
                $input['position'] = $key;
                $input['display'] = $item['deleted'];
                $cat->update($input);
            }
        }

    }

ثبت پرسش جدید
حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 5 سال پیش مطرح شد
2

سلام خیر این چه روش کد نویسیه که فقط میزان کدتون رو زیاد کرده !


mahdi khanzadi
تخصص : backend developer at Snapp mar...
@khanzadimahdi 5 سال پیش مطرح شد
2

در هر تابع حداکثر خطوط کد باید ۲۵ خط باشه. اگه بیشتر بشه میزان پیچیدگی تابع رو بالا میبره و خواناییش رو کم میکنه.


Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 5 سال پیش مطرح شد
1

سلام
@ghomi2018

refactor کنید خیلی جاها رو
کد رو بهینه تر کنید!


محمدرضا قمی اویلی
تخصص : لاراول
@ghomi 5 سال پیش آپدیت شد
0

@khanzadimahdi
@Alimotreb
@hesammousavi
بالاخره برای بدست آوردن فرزدن باید foreach رو درون foreach دیگه قرار بدم و فقط ریفکتور کنم درسته؟
به طور مثال یه تابع دیگه بنویسم که مقادیر بگیره و به شکل زیر انجام بده اوناور :

  $cat = Category::where('title', $item['name'])->first();
                $input['title'] = $item['name'];
                $input['slug'] = $item['slug'];
                $input['parent_id'] = '0';
                $input['position'] = $key;
                $input['display'] = $item['deleted'];
                $cat->update($input);

و در آخر درون هر foreach فقط اون تابع صدا بزنم و وردی هارو بهش پاس بدم


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام