执行动作并返回布尔值的方法

时间:2014-03-20 15:59:20

标签: c# return-value control-flow

我尝试在本地数据集和远程数据集之间建立连接。当我运行我的程序时,调用下面的方法。

 public void CheckCanDo()
 {
    if (LocalAcess.HasNonSyncedItems())
     {
       if (RemoteAcess.TryToSync())
       {
          LocalAcess.RefreshDateLastConnection();
          CanDoThing = true;
       } 
       else
       {
           if(LocalAcess.HasExpired)
           {
               CanDoThing = false;
               return;
           }
       }                
     }
     CanDoThing = true;
 }

让方法执行动作并返回布尔值作为控制应用程序流的方法是否合适?它是否违反了C#的一些好习惯?还有更好的方法吗?

3 个答案:

答案 0 :(得分:0)

替换"无效"用" bool"之前" CheckCanDo()"而不是设置变量等,以返回结果;只需输入一个bool,例如"返回条件;"。这真的是一种更好的方法。

答案 1 :(得分:0)

public bool CheckCanDo()
{
    if (LocalAcess.HasNonSyncedItems())
    {
        if (RemoteAcess.TryToSync())
        {
            LocalAcess.RefreshDateLastConnection();
            return  true;
        }
        else
        {
            if (LocalAcess.HasExpired)
            {
                return false;
            }
        }
    }
    return true;
}

答案 2 :(得分:0)

你可以试试这个...我会建议你保持业务逻辑不稳定,并且删除很多,否则它可能会将业务逻辑转化为混乱!!!

public bool CheckCanDo()
{
        if (!LocalAcess.HasNonSyncedItems())
        {
            return false;
        }

        // It might be !RemoteAcess.TryToSync() || LocalAcess.HasExpired
        // I did not really understand that part
        if (!RemoteAcess.TryToSync() && LocalAcess.HasExpired)
        {
            return false;            
        }

        LocalAcess.RefreshDateLastConnection();
        return true;             
}

此博客可能会对此有所帮助...... How to avoid "if" chains?