编写if语句最干净的方法

时间:2014-07-15 10:38:33

标签: ios if-statement

我有一个if语句,我认为它是不洁净的,写得不好。我有一个值,可以减少并更改依赖于该值的节点的比例。因此,如果值为95,则比例为0.95。

写这个的最好方法是什么?我一直绞尽脑汁试图想出最佳方法。

我现在正在做这件事

//Set Stamina
if(hungerInt >= 100){

    _foodNode.scaleY = 1.0f;

} else if (hungerInt >=95){

    _foodNode.scaleY = 0.95f;

} else if (hungerInt >=90){

    _foodNode.scaleY = 0.90f;

} else if (hungerInt >=80){

    _foodNode.scaleY = 0.80f;

} else if (hungerInt >=70){

    _foodNode.scaleY = 0.70f;

} else if (hungerInt >=60){

    _foodNode.scaleY = 0.60f;

} else if (hungerInt >=50){

    _foodNode.scaleY = 0.50f;

} else if (hungerInt >=40){

    _foodNode.scaleY = 0.40f;

} else if (hungerInt >=30){

    _foodNode.scaleY = 0.30f;

} else if (hungerInt >=20){

    _foodNode.scaleY = 0.20f;

} else if (hungerInt >=10){

    _foodNode.scaleY = 0.10f;

} else {

    _foodNode.scaleY = 0.0f;

}

理想情况下,我希望它根据值来扩展exaclty,因此如果它是96它将是0 .96或者如果它是51那么它将是0.51

3 个答案:

答案 0 :(得分:4)

不需要if

_foodNode.scaleY = (CGFloat)hungerInt / 100.0f;

虽然这只有在您可以保证hungerInt介于0100之间时才有效,所以您可能需要先检查

if (hungerInt < 0)
    hungerInt = 0;
else if (hungerInt > 100)
    hungerInt = 100;

答案 1 :(得分:0)

为什么不能使用?

_foodNode.scaleY = hungerInt / 100.0f;

答案 2 :(得分:0)

如果您不希望_foodNode.scaleY超过1.0且低于0.0,那么您可以使用此代码

_foodNode.scaleY = MAX( 0, MIN( (CGFloat)hungerInt / 100.0, 0 ) );

或者您可以使用函数来执行此操作。

// some pseudo c code. 
static CGFloat minMax(CGFloat n) {
    return MAX(0, min(100, n));
}

然后像这样调用它:

_foodNode.scaleY = minMax((CGFloat)hungerInt) / 100.0