【问题标题】:Is there any more efficient way to code this?有没有更有效的编码方式?
【发布时间】:2015-07-30 06:52:53
【问题描述】:
Start:
        if(fileName.Contains("$track"))
            if(musicInfo.Tag.Track.ToString() != "") {
                fileName.Replace("$track", musicInfo.Tag.Track.ToString());
            }
            else {
                switch(System.Windows.Forms.MessageBox.Show("Error: Track # missing from tag info", "Error", System.Windows.Forms.MessageBoxButtons.AbortRetryIgnore, System.Windows.Forms.MessageBoxIcon.Error)) {
                    case System.Windows.Forms.DialogResult.Abort:
                        fileName = "ABORTED";
                        return fileName;
                    case System.Windows.Forms.DialogResult.Retry:
                        goto Start;
                    case System.Windows.Forms.DialogResult.Ignore:
                        fileName.Replace("$track", "");
                }

            }

我想不出更好的写法,这段代码还有 7 块。

【问题讨论】:

  • 我不确定效率更高,但goto 是很多人讨厌的一段代码。如果文件名包含轨道和标签轨道为空,点击重试只会将它们带到下一个消息框重复重试
  • 嗯,我应该把它改成一个while循环吗?我觉得这只会添加更多代码,我知道它会将它们带到另一个盒子,这是为了让他们可以将任何缺少的细节添加到标签然后单击重试。
  • 他们没有机会添加更多细节,如果他们点击重试,让他们进入那个消息框的条件没有机会改变,所以只要他们点击重试他们会被困在同一个地方
  • 详情可在windows explorer中添加

标签: c# taglib-sharp


【解决方案1】:

这个怎么样?

public string GetFileName(string fileName)
{ 
  if(fileName.Contains("$track") && 
     !String.IsNullOrEmpty(musicInfo.Tag.Track.ToString())
    {
        return fileName.Replace("$track", musicInfo.Tag.Track.ToString());
    }

     var userOption = System.Windows.Forms.MessageBox.Show(
     "Error: Track # missing from tag info", "Error", 
     System.Windows.Forms.MessageBoxButtons.AbortRetryIgnore, 
     System.Windows.Forms.MessageBoxIcon.Error)

    switch(userOption) 
    {
      case System.Windows.Forms.DialogResult.Abort:
          return  "ABORTED";
      case System.Windows.Forms.DialogResult.Retry:
          return GetFileName(fileName);
      case System.Windows.Forms.DialogResult.Ignore:
          return fileName.Replace("$track", "");
     }
}

【讨论】:

  • 递归在这里看起来不合适,
  • 你说得对,解压到其他方法应该会更好。
  • 我上面还有 7 块代码,这是一个链接:pastebin.com/W8RMh68F
猜你喜欢
  • 1970-01-01
  • 2013-11-24
  • 1970-01-01
  • 2021-09-28
  • 1970-01-01
  • 2019-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多