Категория "Оптимизация"

Вопросы по сайту
  1. 6 года назад

    Здравствуйте Алексей, большое спасибо за ресурс, так казать, открыл много "дверей" для фантазии, что помогает писать более красивый код, предложение изложу кратко.
    Можно было бы создать категорию "Оптимизация", для гуру, или же сильно заботящихся об производительности, где будут добавлены разнообразные хитрости, и тонкости кодинга под .Net платформой. Например:

    ------------------------------------------------------------------------------------------------------------------------------------
    "Хитрость"
    Оператор Null Coalescing позволяет коротко записать сравнение значения с null-значением. Она записывается с помощью двойного знака вопроса (??).
    Например, некоторая функция myfunction() может вернуть null значение. В таких случаях вы можете использовать данный оператор для быстрой проверки на null-значение и заменой его на альтернативное значение (не null):

    int myExpectedValueIfNull = 10;
    int expectedValue = myfunction() ?? myExpectedValueIfNull

    ------------------------------------------------------------------------------------------------------------------------------------
    Оператор As

    По какой-то странной причине многие программисты до сих пор активно используют в своем коде оператор Is. И нам приходится иметь дело с чем-то похожим на следующее:

    if (employee is SalariedEmployee)

    {
    var salEmp = (SalariedEmployee)employee;
    pay = salEmp.WeeklySalary;
    }
    Все это можно очень серьезно упростить. Для этого нужно только использовать не оператор is, а несколько похожий по функциональности, но отличный по исполнению As. Ниже приведен пример:

    var salEmployee = employee as SalariedEmployee;

    if (salEmployee != null)
    {
    pay = salEmployee.WeeklySalary;
    }
    В данном случае нам просто не нужно делать еще одно присваивание в if-конструкции. Это видно наглядно в коде. Мы проделываем всю эту работу один раз в самой первой строке. Затем надо удостовериться, что она не равна null (это может быть в том случае, если employee совсем не соответствует типу SalariedEmployee).
    ------------------------------------------------------------------------------------------------------------------------------------

    Все эти "чудеса", были откопаны на просторах сети, можно сделать примерно такую же базу и для сего замечательного портала ▲_▲;

  2. В черновиках можно отвечать, это баг или фича?:D

  3. Alexandr_Erohin

    Mar 29 Администратор

    Черновики сохраняются только у вас, остальные пользователи их не видят. Сделано для удобства, чтобы можно было позже вернуться в тему и дописать ответ, а не писать его заново.

    Не совсем понял про оператор as, в чем оптимизация? As используется для приведения типов, is для сравнения типов, это две разные операции. Если уж и оптимизировать код, то так:

    var pay = employee is SalariedEmployee ? ((SalariedEmployee)employee).WeeklySalary : null;
  4. 5 года назад

    На мобильном устройстве под управлением ОС Android 4.1.2 во встроенном барузере периодически выходит сообщение, что страница не отвечает.

или зарегистрируйтесь чтобы ответить