Простой пример рефакторинга - PullRequest
1 голос
/ 21 января 2010

С учетом следующего кода:

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();

Если вы убедитесь, что он возвращает булпросто полностью поменять метод?

Какой правильный подход к решению проблемы такого типа?

Ответы [ 2 ]

0 голосов
/ 21 января 2010

Предположительно, второй блок кода в вашем вопросе является реализацией GetProvider::UpdateUser().

Очевидная альтернатива гарантии того, что он возвращает значение bool, состоит в том, чтобы он выдавал исключение при сбое. В зависимости от того, сколько у вас есть кода, который возвращает / не возвращает значение, это может сэкономить значительную часть работы. В частности, все, что в данный момент возвращает без значения, можно оставить в покое. Все, что возвращает «успех», может просто удалить возвращаемое значение. Вещи, которые возвращают ошибку, нуждаются в модификации, чтобы вместо этого выдать исключение.

Если вы сделаете это, трудная часть будет гарантировать, что весь другой код безопасен для исключений. В зависимости от вашего другого использования исключений (если таковые имеются), вы почти наверняка должны делать это независимо, но это может вызвать проблему, поэтому вам придется быстрее устранять проблемы в другом коде.

0 голосов
/ 21 января 2010

Я полагаю, это зависит от вас и от того, что вы пытаетесь сделать. Если вы просто не возражаете против возвращаемого значения (bool), вы можете проигнорировать его, но если вы не возражаете против этого, скажем, если оно возвращает false, вы можете отобразить сообщение (например, «Сохранить не удалось» или что-то в этом роде).

...