【发布时间】:2019-10-14 19:22:57
【问题描述】:
以下两个函数中最专业的代码风格是什么?
如果函数变得更复杂和更大,比如有 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;
}
【问题讨论】:
-
绝对是第二个。第一个嵌套太多。
-
我认为第一个更好,因为它是可扩展的。第二个很好,直到您还需要检查
vehicle.isMinivan,然后需要进行重大重构。 -
什么是“做一些事情?”该方法是验证车辆还是修改车辆?如果两者都做,那就有点混乱了。但这个问题的答案可能表明了如何简化代码。
标签: c# .net if-statement coding-style conditional-statements