نمایش نتایج 1 تا 9 از 9

نام تاپیک: راهنمایی در بهینه کردن کد

  1. #1
    کاربر دائمی
    تاریخ عضویت
    آبان 1387
    محل زندگی
    Iran
    پست
    1,338

    راهنمایی در بهینه کردن کد

    public List<tbl> SerchNewsByTitle(string title, int groupid)
    {
    try
    {
    var result = from n in tbl
    where n.GroupId == groupid && n.Title.Contains(title)
    select n;
    if (groupid== -1)
    {
    result = from n in tbl select n;
    }

    return result.ToList();
    }
    catch (Exception e)
    {
    AddExceptionData(e);
    return null;
    }

    }
    آخرین ویرایش به وسیله bftarane : چهارشنبه 27 تیر 1397 در 09:18 صبح

  2. #2

    نقل قول: راهنمایی در بهینه کردن کد

    الان این کد واقعیتونه گذاشتین یا نمونه کده صرفا جهت تفهیم موضوع؟ اگه کد واقعیتونه، چن مورد وجود داره:
    a. اولا اینکه شما اصلا جستجویی براساس title انجام ندادی
    b. دوما فرض کنیم groupId برابر -1 بود، متد شما جفت کوئری رو اجرا میکنه، یعنی کوئری اول رو بدون بررسی هیچ شرطی اجرا میکنه بعد توی بدنه if چک میکنه که groupId برابر -1 هست؟ که بله برابر هست و دوباره یه کوئری دیگه هم اجرا میکنه که اینکار بی معنیه (البته منظورم از اجرا این نیست که داده ها رو واکشی کنه چون تا متد tolist فراخوانی نشه کوئری سمت دیتابیس اجرا نمیشه)

    اما درمورد یکپارچگی، احتمالا منظور طرفتون این باشه که هر متد دقیقا باید کاری که براش تعریف شده رو انجام بده، یعنی الان تو این مثال شما، متد searchByTitle باید فقط داده هایی رو واکشی کنه که groupId براشون بزرگتر از -1 هست، و اون قسمت if رو کلا از این متد حذف کنین و براش یه متد بنویسین که تنها کاری که میکنه واکشی کل خبرها هست، و شما باید خارج از این دوتا متد چک کنین که آیا کاربر گروهی انتخاب کرده یا خیر، اگر گروهی انتخاب کرده بود، متد searchByTitle با groupId انتخاب شده اجرا بشه، در غیر اینصورت متدی که وظیفه واکشی کل خبرها رو داره اجرا کنین

  3. #3
    کاربر دائمی
    تاریخ عضویت
    آبان 1387
    محل زندگی
    Iran
    پست
    1,338

    نقل قول: راهنمایی در بهینه کردن کد

    ممنون از راهنماییتون، نکات خوبی گفتید
    نه کد واقعی نیست، برای تفهیم موضوع این کد رو گذاشتم
    a. بله درست می گید،بیشتر چون تمرکزم روی اون -1 بود سرچ بر اساس تایتل رو فراموش کردم بزارم
    b. بله مورد b به نظر خودم هم رسیده بود ولی نمی دونستم چطور باید این رو بهینه کنم


    و شما باید خارج از این دوتا متد چک کنین که آیا کاربر گروهی انتخاب کرده یا خیر،
    به جای اینکه وقتی گروهی انتخاب نشده از 1- استفاده کنم چه گزینه های دیگه ای می تونه وجود داشته باشه؟
    چون ایشون تأکید داشتن که 1- قابل فهم و گویا برای دیگران نیست
    آیا enum یا const جایگزین بهتری هستند؟

    ممنون می شم اگه توضیحتون همراه با کد باشه، چون اون طوری قابل فهم تره

  4. #4
    کاربر دائمی آواتار ali_md110
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    1,181

    نقل قول: راهنمایی در بهینه کردن کد

    enum به مراتب بهتز از منفی یک هست
    در ضمن میتونید دستورات شرطی که نیاز دارید را با اپراتور ؟ در بدنه where بکار ببرید

  5. #5
    کاربر دائمی
    تاریخ عضویت
    آبان 1387
    محل زندگی
    Iran
    پست
    1,338

    نقل قول: راهنمایی در بهینه کردن کد

    در ضمن میتونید دستورات شرطی که نیاز دارید را با اپراتور ؟ در بدنه where بکار ببرید
    بله این مورد انجام شده

    public List<tbl> SerchNewsByTitle(string title, int groupid)
    {
    try
    {
    var result = from n in tbl
    where (n.groupid == (groupid < 0 ? np.Fk_groupid: groupid)) && n.Title.Contains(title)
    select n;
    return result.ToList();
    }
    catch (Exception e)
    {
    AddExceptionData(e);
    return null;
    }

    }


    ولی هنوز راه حلی برای اجتناب از استفاده از 1- پیدا نکردم

    enum به مراتب بهتز از منفی یک هست
    امکانش هست به صورت شبه کد این رو بنویسید؟

  6. #6

    نقل قول: راهنمایی در بهینه کردن کد

    شما که همچنان کدتون مثل قبله، بنده گفتم خارج از متد چک کنین که groupid برابر -1 هست یا نه؟ اگر بود، یه متد (مثلا GetAllNews) اجرا کنین که وظیفه واکشی کل رکورد هارو داره (یا هر مورد دیگه ای که خودتون مد نظر دارین) اگر مخالف -1 بود بیاد متد SearchNewsByTitle رو اجرا کنه

    در ضمن شما اول نحوه تشخیص اینکه طرف گروهی انتخاب کرده یا نه رو بیان کنین تا روش خودتون رو پیش بگیریم و بگیم چجوری از enum استفاده کنین
    آخرین ویرایش به وسیله mr.sirwan : چهارشنبه 27 تیر 1397 در 16:12 عصر

  7. #7
    کاربر دائمی
    تاریخ عضویت
    آبان 1387
    محل زندگی
    Iran
    پست
    1,338

    نقل قول: راهنمایی در بهینه کردن کد

    در ضمن شما اول نحوه تشخیص اینکه طرف گروهی انتخاب کرده یا نه رو بیان کنین تا روش خودتون رو پیش بگیریم و بگیم چجوری از enum استفاده کنین
    در صفحه یک باتن قرار داره که با کلیک روی اون یک پاپ آپ باز میشه و گروه های اخبار در این پاپ آپ نمایش داده میشه، وقتی کاربر یک گروه رو انتخاب می کنه به صورت جاوااسکریپتی آی دی گروه در یک hidden field ریخته میشه و توسط jquery.ajax به متد پاس داده میشه
    مقدار hidden field به طور پیش فرض 1- قرار دادم
    <input type="hidden"
    id="Fk_groupid" value="-1" />



    $('#test').autocomplete({
    serviceUrl: '/GetNews',
    paramName: 'prefix',

    onSearchStart: function (params) {
    params.groupid = $("#Fk_groupid").val();

    },

  8. #8

    نقل قول: راهنمایی در بهینه کردن کد

    شما اون مقدار پیشفرض (value=-1) رو حذف کنین و سمت کنترلر برای اکشن GetNews پارامتر groupId رو null پذیر یا همون nullable کنین، و داخل بدنه اکشن به جای چک کردن -1، چک کن که آیا groupId برابر null هست یا خیر، نیازی به enum نیست، حالا من ساختار کد اکشنتون رو نمیدونم ولی تقریبا یه همچین چیزی:
    public ActionResult GetNews(int? groupId)
    {
    if (groupId == null)
    return GetAllNews();

    return SearchNewsByTitle(groupId);
    }


  9. #9
    کاربر دائمی
    تاریخ عضویت
    آبان 1393
    محل زندگی
    ایران
    پست
    354

    نقل قول: راهنمایی در بهینه کردن کد

    نقل قول نوشته شده توسط ali_md110 مشاهده تاپیک
    enum به مراتب بهتز از منفی یک هست
    در ضمن میتونید دستورات شرطی که نیاز دارید را با اپراتور ؟ در بدنه where بکار ببرید

    دوستان سلام

    اینجا صحبت از دستورات شرطی و بهینه سازی کد شد، بنده هم سوالی داشتم.

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

    شما ایده ای در مورد عدم استفاده از دستورات شرطی به صورت مستقیم در نظر دارید؟

    بنده هنوز با مفهوم این موضوع آشنا نیستم. کمی مبهم هست.

تاپیک های مشابه

  1. کمک در مورد بهینه کردن کد نوشته شده در یک DLL
    نوشته شده توسط dark-man در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 6
    آخرین پست: پنج شنبه 12 آذر 1388, 21:40 عصر
  2. راهنمایی در رابطه با کد کردن بانک اطلاعاتی
    نوشته شده توسط Sabeghi در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 16
    آخرین پست: یک شنبه 03 آبان 1388, 21:45 عصر
  3. راهنمایی در مورد تولید کد بازگشتی
    نوشته شده توسط mahdi bg در بخش الگوریتم، کامپایلر، هوش مصنوعی و ساختمان داده ها
    پاسخ: 5
    آخرین پست: یک شنبه 02 دی 1386, 20:06 عصر
  4. راهنمایی در مورد یک کد
    نوشته شده توسط rtech در بخش C#‎‎
    پاسخ: 1
    آخرین پست: چهارشنبه 07 آذر 1386, 21:38 عصر
  5. راهنمایی در پیدا کردن مشکل
    نوشته شده توسط سفید برفی در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: یک شنبه 15 بهمن 1385, 13:36 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •