Moh*_*sen 7 .net c# if-statement coding-style conditional-statements
下面两个函数中最专业的代码风格是什么?
如果函数变得更复杂和更大(例如有 20 个检查)怎么办?
注意:我需要在每次检查后做一些事情,所以我不能将所有内容连接到一个 if 语句中,例如:
if (vehicle.isBus) && (vehicle.numberOfWheels == 6) && (vehicle.motorVersion == 2019)
//first alternative
public bool validate(Vehicle vehicle)
{
if(vehicle.isBus)
{
//do some stuff here related to vehicle.isBus
if (vehicle.numberOfWheels == 6)
{
//do some stuff here related to vehicle.numberOfWheels
if (vehicle.motorVersion == 2019)
{
//do some stuff here related to vehicle.motorVersion
return true;
}
}
}
return false;
}
//second alternative
public bool validate(Vehicle vehicle)
{
if (!vehicle.isBus)
{
return false;
}
//do some stuff here related to vehicle.isBus
if (vehicle.numberOfWheels != 6)
{
return false;
}
//do some stuff here related to vehicle.numberOfWheels
if (vehicle.motorVersion != 2019)
{
return false;
}
//do some stuff here related to vehicle.motorVersion
return true;
}
Run Code Online (Sandbox Code Playgroud)
小智 1
第二个示例在阅读代码时需要较少的认知开销。
在第一个示例中,您需要保留程序状态的心理“堆栈”。在第二个示例中,您只需要保留一个您已经知道是真的事情的列表。
第二个例子也不太可能因支架错位而混淆。事实上,在这个例子中它根本不需要任何大括号。