Для меня самое большое преимущество этого совета ReSharper (вы можете установить его как предупреждение, предложение или подсказку). Это побуждает меня сделать как можно больше статических методов. Это хорошо, так как статический метод не имеет прямой зависимости от класса, членом которого он является. Это означает, что его можно легко переместить в другой класс в качестве статического члена.
Еще один полезный трюк со статикой в ReSharper - сделать набор связанных методов статическим с помощью рефакторинга «Make Method Static». Это переместит некоторые зависимости в параметры метода. Когда вы посмотрите на этот набор методов позже, вы можете обнаружить, что все они обращаются к определенному объекту определенного типа. Затем вы можете использовать рефакторинг «Make method non-static» и указать этот объект как новый указатель this . Это переместит ваш метод в другой класс.
Из этого:
internal class ClassA
{
public ClassB Property { get; set; }
public int Method()
{
var classB = Property;
return classB.Property1 + classB.Property2;
}
}
internal class ClassB
{
public int Property1 { get; set; }
public int Property2 { get; set; }
}
к этому:
public static int Method(ClassB property)
{
var classB = property;
return classB.Property1 + classB.Property2;
}
к этому:
internal class ClassA
{
public ClassB Property { get; set; }
}
internal class ClassB
{
public int Property1 { get; set; }
public int Property2 { get; set; }
public int Method()
{
return Property1 + Property2;
}
}