2014-10-29 114 views
1

我有一个函数,它执行的按钮,点击它看起来像这样防止进一步执行

private void Login_Button_Click(object sender, RoutedEventArgs e) 
    { 
     if (!CheckFields()) 
      return; 

     if (!WritePerforceSettingsXml(rewriteSettingsCheckbox.IsChecked.Value)) 
      return; 

     Dictionary<string, string> installerToUpdateList = new Dictionary<string, string>(); 
     if (!GetUpdateListFilesFromXml(ref installerToUpdateList)) 
      return;    

     //some code 
    } 

正如你所看到的,我有一些功能,这检查输入值或只是正确性在里面有“try-catch”操作符,如果发生“catch”事件或者输入无效,应该阻止进一步执行调用者(Login_Button_Click函数)。
但是,所有返回“bool”的函数看起来都不正确,因为我认为。

有没有其他方法可以防止进一步执行调用函数?

+0

什么是您的具体问题与函数返回一个BOOL?你只是觉得它看起来很丑陋? – 2014-10-29 14:46:41

+5

唯一的选择是在被调用的方法内抛出异常 - 但这看起来不像这个特定代码的正确方法。所以我认为可以像你一样使用bools。 – 2014-10-29 14:52:51

+0

您可以在一个if语句中将“或”函数与“||”一起返回。这将与第一个回归正确的短路,但我不认为这会看起来或好得多。 – juharr 2014-10-29 14:58:40

回答

1

我会反转布尔条件:

private void Login_Button_Click(object sender, RoutedEventArgs e) 
{ 
    if (CheckFields() && WritePerforceSettingsXml(rewriteSettingsCheckbox.IsChecked.Value)) 
    { 
     Dictionary<string, string> installerToUpdateList = new Dictionary<string, string>(); 
     if (GetUpdateListFilesFromXml(ref installerToUpdateList)) 
     {   
      //some code 
     } 
    } 
} 

这样你正检查这是更清晰,更容易理解,还可以减少在增加可读性的功能数量或退货。代码的行数也较少。