一天一个重构方法(8):封装条件
2009-05-21 10:03:42Encapsulate Conditional:封装条件
当代码中充斥着若干条件判断时,代码的真正意图会迷失于这些条件判断之中。这时我喜欢将条件判断提取到一个易于读取的属性或方法中。
public class RemoteControl
{
private string[] Functions { get; set; }
private string Name { get; set; }
private int CreatedYear { get; set; }
public string PerformCoolFunction(string buttonPressed)
{
// Determine if we are controlling some extra function
// that requires special conditions
if (Functions.Length > 1 && Name == "RCA" &&
CreatedYear > DateTime.Now.Year - 2)
return "doSomething";
}
}
重构之后,代码的可读性更强,意图更明显:
public class RemoteControl
{
private string[] Functions { get; set; }
private string Name { get; set; }
private int CreatedYear { get; set; }
private bool HasExtraFunctions
{
get
{
return Functions.Length > 1 && Name == "RCA" &&
CreatedYear > DateTime.Now.Year - 2;
}
}
public string PerformCoolFunction(string buttonPressed)
{
// Determine if we are controlling some extra function
// that requires special conditions
if (HasExtraFunctions)
return "doSomething";
}
}