Я столкнулся с этой техникой программирования, когда занимался парным программированием в интервью, и не смог найти ее название в Google.
Идея состоит в том, что вы сначала пишете выражение, которое использует переменные, а затем пишете код, который вычисляет переменные позже.
Чтобы использовать пример кода здесь:
private bool ValidPolicyNumber(string policyNumber)
{
var hasExpectedPrefix = policyNumber.Substring(0,5) == "POLIC";
var followedBy7Digits = Regex.IsMatch(policyNumber.Substring(6,7), "^[0-9]{7}$");
var hasLengthOf12 = policyNumber.Length == 12;
return hasExpectedPrefix && followedBy7Digits && hasLengthOf12;
}
При написании этой функции, используя технику, которую я упомянул, вы сначала должны написать последнюю строку, return hasExpectedPrefix && followedBy7Digits && hasLengthOf12;
а затем написать 3 строки, которые предшествуют ей.
Самым близким методом, который я смог найти, является «желаемое за действительное», и это из SICP, но это касается вызова функций, которые вы собираетесь реализовать позже, а не использования переменных, которые вы собираетесь инициализировать позже.
источник
Ответы:
Это просто вариация функциональной композиции.
Свидетель:
Единственное реальное отличие состоит в том, что ваша версия объединяет вычисленные результаты меньших функций в одну функциональную область, что вам и нужно, если только меньшие функциональные выражения не предназначены для повторного использования в другом месте.
источник
Это может быть просто предложение из Чистого кода (книга), которое следует использовать, когда функциональная декомпозиция (как объяснил Роберт) неприменима из-за того, что функции не могут использоваться повторно самостоятельно.
Однако, если вы хотите получить техническую информацию об этом, в книге « Реализация шаблонов » Кента Бека эта техника называется « Объяснение локальных переменных» (выделено мной):
источник