Скажем, у меня есть метод, Foo()
. Существуют только определенные времена когда Foo()
является соответствующим, как определено методом ShouldFooNow()
. Однако существуют много раз, когда программа должна рассмотреть если Foo()
является соответствующим в это время. Таким образом вместо записи:
if ShouldFooNow():
Foo()
везде, я просто превращаю это в одну функцию:
def __name():
if ShouldFooNow():
Foo()
Каково было бы хорошее название этого метода? Мне приходится нелегко придумывающий хорошую конвенцию. IfNecessaryFoo()
является неловким, особенно если Foo()
имеет более длинное имя. DoFooIfShould()
? Еще более неловкий.
Каков был бы лучший стиль имени?
Думаю, вы довольно близки. Поместите действие / намерение в начало имени метода, чтобы упростить поиск по алфавиту. Если бы я писал что-то подобное, я бы рассмотрел
FooIfNecessary()
FooIfRequired()
Скажем, например,
ElevatePermissionsIfNecessary()
Недавно я начал использовать соглашение:
FooIf(args, bool);
Где args - это любые аргументы, которые принимает метод, а bool либо ожидает логическое значение, либо какой-то Func, который разрешается в логическое . Затем в этом методе я проверяю логическое значение и запускаю логику. Сводит такие утверждения к одной строчке и кажется мне чистым.
Пример в моем коде C # для ведения журнала:
public void WarnIf<T>(T value, string message, Func<T, bool> isTrue)
{
if (isTrue(value)) _log.Warn(message);
}
Тогда я бы назвал его примерно так:
WarnIf(someObject, "This is a warning message to be logged.", s => s.SomeCondition == true);
(Этот вызывающий может быть неправильным, но вы понимаете ... У меня нет кода в прямо сейчас передо мной.)
Можно использовать EnsureFoo()
.
Например, метод EnsurePermissions()
при необходимости предпримет соответствующие действия. Если разрешения уже верны, метод ничего не сделает.