Zetknąłem się z tą techniką programowania podczas wywiadu z programowaniem par i nie mogłem znaleźć jej nazwy w Google.
Chodzi o to, że najpierw piszesz wyrażenie, które używa zmiennych, a następnie piszesz kod, który oblicza zmienne później.
Aby użyć przykładowego kodu tutaj:
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;
}
Pisząc tę funkcję za pomocą wspomnianej wcześniej techniki, należy najpierw napisać ostatni wiersz, return hasExpectedPrefix && followedBy7Digits && hasLengthOf12;
a następnie 3 poprzedzające go wiersze.
Najbliższą techniką, jaką mogłem znaleźć, jest „myślenie życzeniowe”, które pochodzi z SICP, ale dotyczy to wywoływania funkcji, które zamierzasz zaimplementować później, zamiast używania zmiennych, które później zainicjujesz.
programming-practices
użytkownik2108462
źródło
źródło
Odpowiedzi:
To tylko wariacja na temat składu funkcjonalnego.
Świadek:
Jedyną prawdziwą różnicą jest to, że twoja wersja łączy obliczone wyniki mniejszych funkcji w jednym zakresie funkcjonalnym, czego potrzebujesz, chyba że mniejsze wyrażenia funkcjonalne mają być ponownie użyte w innym miejscu.
źródło
Może to być po prostu sugestia z Czystego Kodu (książki), którą można zastosować, gdy Rozkład Funkcjonalny (jak wyjaśnił Robert) nie ma zastosowania, ponieważ wynikające z niego funkcje nie nadają się do ponownego użycia.
Jeśli jednak chcesz się na ten temat dowiedzieć technicznie, książka Implementation Patterns autorstwa Kenta Becka nazywa tę technikę Objaśnianiem zmiennych lokalnych (moje podkreślenie):
źródło