예를

2010-01-21 7 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는 어디에서 호출됩니까? –

+0

왜이 태그가 C++로 태그 되었습니까? –

답변

0

아마도 두 번째 코드 블록은 GetProvider::UpdateUser()의 구현입니다.

bool을 반환하는 확실한 대안은 실패시 예외를 throw하는 것입니다. 보유하고있는 기존 코드의 양에 따라 값을 반환하거나 반환하지 않아 상당한 양의 작업을 줄일 수 있습니다. 특히 현재 값없이 반환되는 항목은 그대로 둘 수 있습니다. "성공"을 리턴하는 것은 단순히 리턴 값을 제거 할 수 있습니다. 실패를 반환하는 것들은 예외를 던지기 위해 수정이 필요합니다.

이렇게하면 어려운 부분은 다른 모든 코드가 예외 안전하다는 것을 보증하는 것입니다. 다른 예외 사용 (있는 경우)에 따라 관계없이이 작업을 거의 확실히 수행해야하지만 이로 인해 문제가 발생할 수 있으므로 나중에 다른 코드의 문제를 빨리 정리해야합니다.

+0

Jerry에게 감사드립니다. aspnet 회원 코드를 사용하여 사용자 프로필을 업데이트하는 데 잘못된 방법을 사용하고 있습니다. 아마 '옳은'방법은 나에게 반환 가치를 줄 것인가? – 78lro

0

나는 당신과 당신이하려고하는 것을 믿는다. 반환 된 값 (bool)에 대해 신경 쓰지 않는다면 무시할 수있다. 메시지를 표시 할 수 있습니다 (예 : "저장하지 못했습니다"또는 기타).