Если у вас один и тот же защитный оператор в начале слишком многих методов, вы можете создать метод executeWithGuard:
private void executeWithGuard(Action method)
{
if (HeadSize) method();
}
Тогда вы можете сделать это:
public void ScreenFirstShot()
{
executeWithGuard(() =>
{
// code here
});
}
public void ScreenSecondShot()
{
ExecuteWithGuard(() =>
{
// code here
});
}
public void CrazyUp()
{
ExecuteWithGuard(() =>
{
// code here
});
}
Там не меньше кода, делающего это ... на самом деле, вероятно, больше кода, но он позволяет вам не выполнять поиск / замену, если ваше условие защиты когда-либо изменится. Я бы предложил это только в крайнем случае. Вполне возможно, что ваша настоящая проблема заключается в том, что вы выполняете проверку слишком далеко от дерева вызовов. Если вы можете сделать это на более высоком уровне, вы можете уберечь себя от всей этой проверки.
1010 * ТАКЖЕ *
Взгляните на шаблон нулевого объекта . Этот шаблон может использоваться в некоторых особых случаях для предотвращения или упрощения проверки состояния.
ТАКЖЕ (версия 2)
Трудно понять, каково ваше намерение, поскольку вопрос сосредоточен на конкретном решении, но если вы выполняете эти методы последовательно, вы можете посмотреть на использование шаблона стратегии и поставить отметку в класс вашей базовой стратегии.