如何消除代码重复

How to eliminate code repetition?

本文关键字:代码 何消      更新时间:2023-10-16

如何减少以下代码片段中的代码重复:

  if(motionIOS == 0) 
  {
    if(character == 40)
    {
      previousMotion = character;
    }
      if(previousMotion == 40 && character == 50)
      {
        motionIOSValue = 50;
      }
    else
    {
    previousMotion = character;
    }
  }
  if(motionIOS == 1) 
  {
    if(character == 60)
    {
      previousMotion = character;
    }
      if(previousMotion == 60 && character == 70)
      {
        motionIOSValue = 70;
      }
    else
    {
    previousMotion = character;
    }
  }

从本质上讲,我正在执行两次相同的代码,但某些事情的值发生了变化。我什至需要多次使用可变数字的这段代码。

我想我应该把它重构成一个函数,但不知道如何。

您可以合并您的状况检查。

if(motionIOS == 0 && previousMotion == 40 && character == 50) {
    motionIOSValue = 50;
} else if (motionIOS == 1 && previousMotion == 60 && character == 70){
    motionIOSValue = 70;
} else {
    previousMotion = character;
}

如果需要,可以将条件检查提取到另一个类。

bool updateIosValue(int previousMotion, int character, int testMotion, int testCharacter){
    //do your custom checks here.
    return previousMotion==testMotion && character== testCharacter;
} 
if(motionIOS==0 && updateIosValue(previousMotion, character, 40, 50){
    motionIOSValue = 50;
}else if(motionIOS==1 && updateIosValue(previousMotion, character, 60, 70){
    motionIOSValue = 70;
}else{
    previousMotion = character;
}