在一次采访中,我在做对编程时偶然发现了这种编程技术,但是在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的,但这与调用稍后要实现的函数有关,而不是使用稍后要初始化的变量。
发布于 2017-04-06 19:42:32
这只是功能成分。上的一个变化
证人:
private bool ValidPolicyNumber(string policyNumber)
{
return hasExpectedPrefix(policyNumber)
&& followedBy7Digits(policyNumber)
&& hasLengthOf12(policyNumber);
}
private bool hasExpectedPrefix(string policyNumber)
{
return policyNumber.Substring(0,5) == "POLIC";
}
private bool followedBy7Digits
{
return Regex.IsMatch(policyNumber.Substring(6,7), "^[0-9]{7}$");
}
private bool hasLengthOf12
{
return policyNumber.Length == 12;
}唯一真正的区别是,您的版本将较小函数的计算结果合并到一个功能范围中,这就是您想要的结果,除非较小的函数表达式打算在其他地方重复使用。
发布于 2017-04-06 21:02:49
这可能只是来自Clean (这本书)的建议,当功能分解(正如Robert解释的那样)由于其本身无法重用而导致的功能不适用时使用。
但是,如果您想了解有关它的技术,Kent Beck的“图书实现模式”将此技术命名为“解释局部变量(着重于我的)”:
局部变量局部变量只能从声明点到作用域结束时才能访问。遵循尽可能少传播信息的原则,在使用局部变量之前,在最内部可能的范围内声明局部变量。局部变量有几个常见的角色:
https://softwareengineering.stackexchange.com/questions/345701
复制相似问题