Как сейчас с работой '25?
если функция не зависит от класса то предпочтительнее её сделать static.
В чем же плюсы статической функции?
В Rider и VS очень часто это и предлагается.
Это не значит, что это хорошее решение ;)
Так как в функции нет зависимости от класса, JIT может её проще сделать inline.
Как там JIT работает мало интересно. Это все "под капотом" и никак не влияет ни на читаемость кода, ни на его тестируемость.
Да и тестировать легче, потому что не ожидается никаких побочных эффектов.
Ну да, проблема только в том, что нужно знать как работает такая функция, т.е. по-сути это white box.
Возьмем простой пример:
List<string> someCollection = new List<string>();
Далее есть 2 способа работы с этим списком: 1) передавать все как IList или 2) IEnumerable
Если работать с IList, то все можно отлично "мокать" и тестировать без создания списка.
Если же работать с IEnumerable, то через LINQ можно сделать все тоже самое, но есть нюанс - придется создавать список. Т.е. по факту для тестирования какого-то кода придется создавать инфраструктуру. Более того, тест, скажем удаления элемента из списка становится значительно сложнее... а если нужно проверить только факт вызова функции удаления элемента, то это вообще невозможно сделать.
Zurück