Pracuję w języku C#, więc opublikowałem to pod C#, chociaż może to być pytanie, na które można odpowiedzieć w dowolnym języku programowania.Metody, które zwracają znaczące wartości zwracane
Czasami stworzę metodę, która zrobi coś takiego, jak zalogowanie użytkownika na stronie internetowej. Często zwracam wartość boolean z metody, ale często powoduje to problemy, ponieważ wartość zwracana przez boolowską wartość nie przekazuje żadnego kontekstu. Jeśli wystąpi błąd podczas logowania użytkownika, nie mam możliwości dowiedzenia się, co spowodowało błąd.
Oto przykład sposobu, że aktualnie w użyciu, ale chciałby zmienić tak, że zwraca więcej niż tylko 0 lub 1.
public bool LoginToTwitter(String username, String password)
{
// Some code to log the user in
}
powyższa metoda może zwracać tylko Prawda czy fałsz. Działa to dobrze, bo mogę po prostu zadzwonić następujący:.
if(http.LoginToTwitter(username, password))
{
// Logged in
} else {
// Not Logged in
}
Ale problem jest, nie mam pojęcia, dlaczego użytkownik nie był zalogowany w wielu powodów może istnieć takie jak: niewłaściwej nazwy użytkownika/hasła połączenie, konto zawieszone, konto wymaga uwagi użytkowników itp. Jednak przy użyciu poniższej metody i logiki nie można o tym wiedzieć.
Jakie mam alternatywne podejścia?
Co się stało, gdy wystąpił nowy warunek błędu. @Dan? – xhamr
@jvra Jeśli są jakieś nieoczekiwane wyjątki, uważam, że powinny zostać ponownie zgłoszone, jak wskazują niektóre inne odpowiedzi. Jednak Twój kod powinien być w stanie obsłużyć wszystkie spodziewane przypadki: Złą nazwę użytkownika, nieprawidłowe hasło, zawieszenie konta, itp ... i zwrócić te oczekiwane przypadki w wyliczeniu, aby aplikacja mogła obsłużyć. –
Ale faktem jest, kiedy chcesz obsłużyć inne wyliczenie błędów. Twój kod może się rozwinąć, gdy wyrośnie twoje stałe. ale jest do przyjęcia, jeśli wiesz, że w przyszłości nie można było wyliczyć więcej stałych. – xhamr