|
В чем выгода делать метод статическим ?
|
|||
---|---|---|---|
#18+
Привет. Вопрос несколько философский. Есть ли какой-то смысл делать некий метод класса, который работает только с параметрами и не обращается к переменным класса, статическим ? есть ли смысл менять это: Код: c# 1. 2. 3. 4.
на это: static private int GetAnswer(int number) ? Может какая то выгода по памяти ? Я не вижу выгоды. Если бы там методы был бы виртуаааааальным, то может быть была бы какая-то выгода на уменьшении таблицы виртуальных методов. Но какая выгода ? 20 байт ? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 16:30 |
|
В чем выгода делать метод статическим ?
|
|||
---|---|---|---|
#18+
NTierNoob, делай static ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 16:34 |
|
В чем выгода делать метод статическим ?
|
|||
---|---|---|---|
#18+
Производительность и расход памяти тут вообще рассматривать всерьез не стоит. Какое поведение будет более логичным -- вот что надо понять. Давай конкретный пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 16:37 |
|
В чем выгода делать метод статическим ?
|
|||
---|---|---|---|
#18+
static, т.к. потенциально можно будет использовать снаружи без создания объекта ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 16:48 |
|
В чем выгода делать метод статическим ?
|
|||
---|---|---|---|
#18+
NTierNoobМожет какая то выгода по памяти ? Я не вижу выгоды. Теоретически немного быстрее. Практически я особой разницы не вижу ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 16:56 |
|
В чем выгода делать метод статическим ?
|
|||
---|---|---|---|
#18+
Arm79, а с чего это быстрее? Один хрен ссылка или в таблица объекта или типа. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 17:07 |
|
В чем выгода делать метод статическим ?
|
|||
---|---|---|---|
#18+
НахлобучДавай конкретный пример. Как такового примера нет. Точнее - тыщи их. У нас используется DevExpress компоненты, и их Code Rush (или какая из утилит дает подсказки по коду ?). Вот он и дает такие рекомендации. Меня заинтересовало, в чем выгода то. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 17:10 |
|
В чем выгода делать метод статическим ?
|
|||
---|---|---|---|
#18+
NTierNoobМеня заинтересовало, в чем выгода то. выгода в том, что нестатическому методу передаётся ссылка на экземпляр объекта. а статическому такая ссылка не передаётся. накладных расходов чуть меньше. в первую очередь делать метод статическим необходимо отнюдь не из-за экономических причин, а для правильного понимания программистом работы метода. такой метод невозможно вызвать через ссылку на интерфейс или экземпляра, зато его можно использовать без наличия этой ссылки. в общем рекомендации такие: если метод можно сделать static без ущерба функционирования класса, делайте его static . если вам интересна выгода по части производительности, накидайте простые тесты обоих способов и сравните результаты. какие проблемы? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 17:28 |
|
В чем выгода делать метод статическим ?
|
|||
---|---|---|---|
#18+
Pallarisstatic, т.к. потенциально можно будет использовать снаружи без создания объектаprivate ???? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 17:29 |
|
В чем выгода делать метод статическим ?
|
|||
---|---|---|---|
#18+
ШайтанPallarisstatic, т.к. потенциально можно будет использовать снаружи без создания объектаprivate ???? Тогда только так Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 17:39 |
|
В чем выгода делать метод статическим ?
|
|||
---|---|---|---|
#18+
NTierNoob, Статические методы нужны, если необходимо, чтобы часть данных совместно использовалась всеми объектами класса. Например, есть у тебя класс Товары и нужно определить один общий коэффициент накрутки на стоимость этих товаров. Тогда можешь обратиться через имя класса к статическому методу со статической переменной и установить общий коэффициент всем объектам этого класса. А без статического метода пришлось бы указывать коэффициент для каждого объекта класса Товары. Т.е. если 100 объектов, то нужно было бы 100 раз вызвать метод для определения коэффициента. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 19:02 |
|
В чем выгода делать метод статическим ?
|
|||
---|---|---|---|
#18+
А если не обращается к статическим переменным класса, то по мне смысла нет от таких статических методов ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 19:11 |
|
В чем выгода делать метод статическим ?
|
|||
---|---|---|---|
#18+
NTierNoob, есть мнение, что статические методы сложнее тестировать. А именно, писать юнит-тесты: такой метод сложнее подменить. Хотя Microsoft Fakes способен на многое... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 19:16 |
|
В чем выгода делать метод статическим ?
|
|||
---|---|---|---|
#18+
netivanArm79, а с чего это быстрее? Один хрен ссылка или в таблица объекта или типа.Ну хотя бы проверку объекта на null не надо делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 19:56 |
|
В чем выгода делать метод статическим ?
|
|||
---|---|---|---|
#18+
NTierNoob, добавлю угару 15837462 , если сделать статик то потоки будут одновременно обращаться к методу, а если нет - борьба за метод )) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2014, 20:03 |
|
В чем выгода делать метод статическим ?
|
|||
---|---|---|---|
#18+
petalvikNTierNoob, есть мнение, что статические методы сложнее тестировать. А именно, писать юнит-тесты: такой метод сложнее подменить. Хотя Microsoft Fakes способен на многое... Если метод "Pure" (без побочных эффектов), то и подменять ничего не надо. Используешь сам метод в юнит-тесте.. С другой стороны, статический метод с побочными эффектами - это, скорее всего, признак кривой архитектуры. Ну, и еще польза статик-методов в том, что их можно сделать extension-методами :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2014, 11:11 |
|
|
start [/forum/topic.php?fid=20&msg=38607628&tid=1403068]: |
0ms |
get settings: |
12ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
441ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 562ms |
0 / 0 |