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

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

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

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

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



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

?

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

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

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

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

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

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

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

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

в общем рекомендации такие: если метод можно сделать static без ущерба функционирования класса, делайте его static . если вам интересна выгода по части производительности, накидайте простые тесты обоих способов и сравните результаты. какие проблемы?
...
Рейтинг: 0 / 0
В чем выгода делать метод статическим ?
    #38607554
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallarisstatic, т.к. потенциально можно будет использовать снаружи без создания объектаprivate ????
...
Рейтинг: 0 / 0
В чем выгода делать метод статическим ?
    #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
В чем выгода делать метод статическим ?
    #38607628
Andemki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NTierNoob,

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

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

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

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

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

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


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


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