Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / В чем выгода делать метод статическим ? / 16 сообщений из 16, страница 1 из 1
07.04.2014, 16:30
    #38607476
NTierNoob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем выгода делать метод статическим ?
Привет.

Вопрос несколько философский.

Есть ли какой-то смысл делать некий метод класса, который работает только с параметрами и не обращается к переменным класса, статическим ?

есть ли смысл менять это:

Код: c#
1.
2.
3.
4.
        private int GetAnswer(int number)
        {
            return number++;
        }



на это:
static private int GetAnswer(int number)

?

Может какая то выгода по памяти ?
Я не вижу выгоды.

Если бы там методы был бы виртуаааааальным, то может быть была бы какая-то выгода на уменьшении таблицы виртуальных методов. Но какая выгода ? 20 байт ?
...
Рейтинг: 0 / 0
07.04.2014, 16:34
    #38607486
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем выгода делать метод статическим ?
NTierNoob,

делай static
...
Рейтинг: 0 / 0
07.04.2014, 16:37
    #38607494
Нахлобуч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем выгода делать метод статическим ?
Производительность и расход памяти тут вообще рассматривать всерьез не стоит. Какое поведение будет более логичным -- вот что надо понять. Давай конкретный пример.
...
Рейтинг: 0 / 0
07.04.2014, 16:48
    #38607507
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем выгода делать метод статическим ?
static, т.к. потенциально можно будет использовать снаружи без создания объекта
...
Рейтинг: 0 / 0
07.04.2014, 16:56
    #38607516
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем выгода делать метод статическим ?
NTierNoobМожет какая то выгода по памяти ?
Я не вижу выгоды.
Теоретически немного быстрее. Практически я особой разницы не вижу
...
Рейтинг: 0 / 0
07.04.2014, 17:07
    #38607531
netivan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем выгода делать метод статическим ?
Arm79,

а с чего это быстрее? Один хрен ссылка или в таблица объекта или типа.
...
Рейтинг: 0 / 0
07.04.2014, 17:10
    #38607536
NTierNoob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем выгода делать метод статическим ?
НахлобучДавай конкретный пример.

Как такового примера нет. Точнее - тыщи их.

У нас используется DevExpress компоненты, и их Code Rush (или какая из утилит дает подсказки по коду ?). Вот он и дает такие рекомендации.

Меня заинтересовало, в чем выгода то.
...
Рейтинг: 0 / 0
07.04.2014, 17:28
    #38607553
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем выгода делать метод статическим ?
NTierNoobМеня заинтересовало, в чем выгода то.

выгода в том, что нестатическому методу передаётся ссылка на экземпляр объекта. а статическому такая ссылка не передаётся. накладных расходов чуть меньше. в первую очередь делать метод статическим необходимо отнюдь не из-за экономических причин, а для правильного понимания программистом работы метода. такой метод невозможно вызвать через ссылку на интерфейс или экземпляра, зато его можно использовать без наличия этой ссылки.

в общем рекомендации такие: если метод можно сделать static без ущерба функционирования класса, делайте его static . если вам интересна выгода по части производительности, накидайте простые тесты обоих способов и сравните результаты. какие проблемы?
...
Рейтинг: 0 / 0
07.04.2014, 17:29
    #38607554
Шайтан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем выгода делать метод статическим ?
Pallarisstatic, т.к. потенциально можно будет использовать снаружи без создания объектаprivate ????
...
Рейтинг: 0 / 0
07.04.2014, 17:39
    #38607560
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем выгода делать метод статическим ?
ШайтанPallarisstatic, т.к. потенциально можно будет использовать снаружи без создания объектаprivate ????

Тогда только так
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public static int PublicMethod()
{
      return PrivateMethod();
}

private static int Method()
{
.....
}
...
Рейтинг: 0 / 0
07.04.2014, 19:02
    #38607628
Andemki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем выгода делать метод статическим ?
NTierNoob,

Статические методы нужны, если необходимо, чтобы часть данных совместно использовалась всеми объектами класса.
Например, есть у тебя класс Товары и нужно определить один общий коэффициент накрутки на стоимость этих товаров. Тогда можешь обратиться через имя класса к статическому методу со статической переменной и установить общий коэффициент всем объектам этого класса.
А без статического метода пришлось бы указывать коэффициент для каждого объекта класса Товары. Т.е. если 100 объектов, то нужно было бы 100 раз вызвать метод для определения коэффициента.
...
Рейтинг: 0 / 0
07.04.2014, 19:11
    #38607633
Andemki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем выгода делать метод статическим ?
А если не обращается к статическим переменным класса, то по мне смысла нет от таких статических методов
...
Рейтинг: 0 / 0
07.04.2014, 19:16
    #38607637
petalvik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем выгода делать метод статическим ?
NTierNoob,

есть мнение, что статические методы сложнее тестировать. А именно, писать юнит-тесты: такой метод сложнее подменить.
Хотя Microsoft Fakes способен на многое...
...
Рейтинг: 0 / 0
07.04.2014, 19:56
    #38607663
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем выгода делать метод статическим ?
netivanArm79,

а с чего это быстрее? Один хрен ссылка или в таблица объекта или типа.Ну хотя бы проверку объекта на null не надо делать.
...
Рейтинг: 0 / 0
07.04.2014, 20:03
    #38607666
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем выгода делать метод статическим ?
NTierNoob,
добавлю угару 15837462 , если сделать статик то потоки будут одновременно обращаться к методу, а если нет -
борьба за метод ))
...
Рейтинг: 0 / 0
08.04.2014, 11:11
    #38608120
Диез
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В чем выгода делать метод статическим ?
petalvikNTierNoob,

есть мнение, что статические методы сложнее тестировать. А именно, писать юнит-тесты: такой метод сложнее подменить.
Хотя Microsoft Fakes способен на многое...

Если метод "Pure" (без побочных эффектов), то и подменять ничего не надо. Используешь сам метод в юнит-тесте..

С другой стороны, статический метод с побочными эффектами - это, скорее всего, признак кривой архитектуры.


Ну, и еще польза статик-методов в том, что их можно сделать extension-методами :)
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / В чем выгода делать метод статическим ? / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]