减小功能大小

时间:2011-07-12 17:45:25

标签: c# optimization size-reduction

也许这是一个虚拟问题,但由于我不是C#专家,我认为使用较少的代码行可以更好地编写这个函数。

这是:

    public void chgnav(string wt, string nav)
    {
        if (wt == "enable")
        {
            if (nav == "prev")
            {
                pictureBox7.Visible = true;
                pictureBox9.Visible = false;
            }
            else
            {
                pictureBox8.Visible = true;
                pictureBox10.Visible = false;
            }
        }
        else
        {
            if (nav == "prev")
            {
                pictureBox7.Visible = false;
                pictureBox9.Visible = true;
            }
            else
            {
                pictureBox8.Visible = false;
                pictureBox10.Visible = true;
            }

        }
    }

修改:感谢所有人,我的赞成。我得到了我想要的东西。

4 个答案:

答案 0 :(得分:6)

public void chgnav(string wt, string nav)
{
   bool wtEnabled = wt == "enable";
   if (nav == "prev")
   {
      pictureBox7.Visible = wtEnabled;
      pictureBox9.Visible = !wtEnabled;
   }
   else
   {
      pictureBox8.Visible = !wtEnabled;
      pictureBox10.Visible = wtEnabled;
   }
}

修改:修复

答案 1 :(得分:6)

我认为该方法的意图是明确的,并且实现是干净的。它可能比你想要的长几行,但为了几行代码的混淆是我书中的净损失。

我会保持原样。

答案 2 :(得分:1)

这可能有效:

public void chgnav(string wt, string nav)
{
        if (nav == "prev")
        {
            pictureBox7.Visible = (wt=="enable");
            pictureBox9.Visible = (wt!="enable");
        }
        else
        {
            pictureBox8.Visible = (wt=="enable");
            pictureBox10.Visible = (wt!="enable");
        }
}

甚至:

public void chgnav(string wt, string nav)
{
    (nav=="prev" ? pictureBox7 : pictureBox8).Visible = (wt=="enable");
    (nav=="prev" ? pictureBox9 : pictureBox10).Visible = (wt!="enable");
}

答案 3 :(得分:0)

这适用于您所拥有的有限范围,但假设它大10倍且输入更多。

你想要的是一个'真值表'设置。

你有一个字典,其中包含与你的参数对应的密钥。

给定params'isBlue'和'isBig',你的字典键将是

'ff'//不是蓝色或大

'tf'//蓝色但不大

字典键会引导您获取对象,属性名称及其值的映射值。

所以你的地图可能是一个元组列表。其中元组< object,string,object>或简单的结构。

然后你的代码会做一些ifs来组成密钥,从字典中获取元组列表或结构,在列表中运行以执行适合每个对象的操作。