русский

Как сейчас с работой '25?

3 Tage zurück, 09:10
Re: Как сейчас с работой '25?
 
Программист коренной житель
in Antwort romanovi4 4 Tage zurück, 17:45, Zuletzt geändert 3 Tage zurück, 09:18 (Программист)
если функция не зависит от класса то предпочтительнее её сделать static.

В чем же плюсы статической функции?


В Rider и VS очень часто это и предлагается.

Это не значит, что это хорошее решение ;)


Так как в функции нет зависимости от класса, JIT может её проще сделать inline.

Как там JIT работает мало интересно. Это все "под капотом" и никак не влияет ни на читаемость кода, ни на его тестируемость.


Да и тестировать легче, потому что не ожидается никаких побочных эффектов.

Ну да, проблема только в том, что нужно знать как работает такая функция, т.е. по-сути это white box.

Возьмем простой пример:

List<string> someCollection = new List<string>();

Далее есть 2 способа работы с этим списком: 1) передавать все как IList или 2) IEnumerable

Если работать с IList, то все можно отлично "мокать" и тестировать без создания списка.

Если же работать с IEnumerable, то через LINQ можно сделать все тоже самое, но есть нюанс - придется создавать список. Т.е. по факту для тестирования какого-то кода придется создавать инфраструктуру. Более того, тест, скажем удаления элемента из списка становится значительно сложнее... а если нужно проверить только факт вызова функции удаления элемента, то это вообще невозможно сделать.


 

Sprung zu