Почему команда метода extract в visual studio создает статические методы?
Почему Visual Studio по умолчанию создает частный статический метод при рефакторинге кода и выборе метода извлечения?
Если я рефакторинг нестатического класса, и метод доступен только в классе, почему он статичен?
Есть ли какое-то преимущество в производительности, вызывая частный статический метод в нестационарном классе по сравнению с нестатическим методом в нестационарном классе?
Можно ли просто показать, что метод не полагается на какие-либо переменные-члены класса?
Ответы
Ответ 1
Почему Visual Studio по умолчанию создает частный статический метод при рефакторинге кода и выборе метода извлечения?
Это делается только в том случае, если ваш метод не имеет доступа к элементарным переменным/методам/свойствам. Это хорошо, потому что он в основном работает по принципу наименьших допущений: поскольку вы не получаете доступа к данным, специфичным для экземпляра, также может сделать метод static
.
Есть ли какое-то преимущество в производительности, вызывая частный статический метод в нестационарном классе по сравнению с нестатическим методом в нестатическом классе?
Теоретически, может быть, но я в этом сомневаюсь. Тем не менее, при создании метода static становится ясно, что он не будет обращаться к данным экземпляра или изменять его, что я нашел полезный намек.
Ответ 2
Создание статического метода можно рассматривать как повышение производительности, потому что нет указателя "this" для передачи в качестве переменной. Я использую ReSharper и всегда рекомендует превращать методы в static, если они не относятся к переменной класса.