2010-01-21 65 views
1

考虑下面的代码:简单的重构例如

public static bool UpdateUser(string userId, 
             string jobTitle) 
{  
     return GetProvider().UpdateUser 
      (userId, jobTitle); 
} 

它需要被改变,可能不会返回一个布尔值,例如:

UserProfile userProfile = new UserProfile(); 
    userProfile.Initialize(user.UserName, true); 
    userProfile.ProfileJobTitle = jobTitle; 
    userProfile.Save(); 

你应该确保它返回一个布尔值,或只是彻底改变方法?

这种类型的问题的正确方法是什么?

+1

是您的第二个代码块,说明该函数的替代BODY或INVOCATION?如果是这样,UpdateUser在哪里调用? – 2010-01-21 17:14:34

+0

为什么被标记为C++? – 2010-01-21 17:21:49

回答

0

大概你问题中的第二块代码是GetProvider::UpdateUser()的实现。

确保它返回一个布尔的明显替代方法是让它在失败时抛出异常。根据你有多少现有的代码不会返回一个值,这可能会节省大量的工作。特别是,任何目前没有价值的回报都可以单独存在。任何返回“成功”的东西都可以简单地删除返回值。返回失败的东西需要修改才能抛出异常。

如果你这样做,困难的部分将确保所有其他代码是异常安全的。根据你对异常的其他用法(如果有的话),你应该几乎可以肯定地做到这一点,但这可能会迫使这个问题,所以你需要尽快清理其他代码中的问题。

+0

谢谢杰里,这可能是我使用错误的方法更新使用aspnet成员资格代码的用户配置文件。也许“正确”的方式会给我一个回报价值? – 78lro 2010-02-05 08:14:04

0

我相信取决于你和你正在尝试做什么,如果你只是不介意返回的值(布尔),你可以忽略它,但如果你介意它,让我们假设它是否返回false可以显示一条消息(即“保存不成功”或其他)。