Eu me deparei com essa técnica de programação enquanto fazia programação em pares em uma entrevista e não conseguia encontrar o nome dela no google.
A idéia é que você primeiro escreva a expressão que usa as variáveis e depois escreva o código que calcula as variáveis posteriormente.
Para usar algum código de exemplo aqui:
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;
}
Ao escrever esta função usando a técnica que eu mencionei, você primeiro escreveria a última linha return hasExpectedPrefix && followedBy7Digits && hasLengthOf12;
e depois as 3 linhas que a precedem.
A técnica mais próxima que pude encontrar é o "pensamento positivo", que é do SICP, mas está relacionado à chamada de funções que você implementará mais tarde, em vez de usar variáveis que você inicializará mais tarde.
programming-practices
user2108462
fonte
fonte
Respostas:
É apenas uma variação na composição funcional.
Testemunha:
A única diferença real é que sua versão combina os resultados calculados das funções menores em um único escopo funcional, que é o que você deseja, a menos que as expressões funcionais menores sejam reutilizadas em outros lugares.
fonte
Isso poderia ser apenas uma sugestão do Clean Code (o livro), a ser usada quando a Decomposição Funcional (como Robert explicou) não for aplicável devido às funções resultantes não serem reutilizáveis por si próprias.
No entanto, se você quiser ser técnico, o livro Implementation Patterns , de Kent Beck, nomeia essa técnica como Explaining Local Variables (ênfase minha):
fonte