简单的重构示例

时间:2010-01-21 17:09:58

标签: refactoring coding-style

给出以下代码:

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

需要更改并且可能不会返回bool,例如:

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

你确定它确实会返回bool或者只是完全改变方法吗?

解决此类问题的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

我相信这取决于你和你想要做什么,如果你只是不介意返回值(bool)你可以忽略它,但如果你介意它,让我们说如果它返回false你可以显示消息(即“保存不成功”或其他)。

答案 1 :(得分:0)

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

确保它确实返回bool的明显替代方法是让它在失败时抛出异常。根据您拥有/不返回值的现有代码量,这可能会节省大量工作。特别是,任何当前没有值返回的东西都可以保持不变。任何返回“成功”的东西都可以删除返回值。返回失败的东西需要修改才能抛出异常。

如果你这样做,困难的部分将是确保所有其他代码都是异常安全的。根据您对异常的其他使用(如果有的话),您几乎肯定会这样做,但这可能会导致问题,因此您需要尽快清除其他代码中的问题。