راکت

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

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);
            }
        }

    }
ثبت پرسش جدید

پاسخ‌ها

4
حسام موسوی
حسام موسوی
@hesammousavi

تخصص: طراح و برنامه نویس

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

mahdi khanzadi
mahdi khanzadi
@khanzadimahdi

تخصص: Software engineer

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

شاید پاسخ شما همین‌جا باشد

Alimotreb
Alimotreb
@Alimotreb

تخصص: کانفیگ سرور و برنامه نویس

سلام
@ghomi2018

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

محمدرضا قمی اویلی
محمدرضا قمی اویلی
@ghomi

تخصص: لاراول

@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 فقط اون تابع صدا بزنم و وردی هارو بهش پاس بدم

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

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