2010-01-29 19 views
1

我嘗試重寫使用短手這種方法,如果:回報速記如果

public string checkInputParamters(string baseUrl, string owner, string documentId, string user, string secret, string type) 
    { 
     if (String.IsNullOrEmpty(baseUrl)) 
      return ExceptionsCodes.BASE_URL_CANNOT_BE_NULL_OR_EMPTY.ToString("g"); 

     if (String.IsNullOrEmpty(owner)) 
      return ExceptionsCodes.OWNER_CANNOT_BE_NULL_OR_EMPTY.ToString("g"); 

     return ""; 
    } 

我做不到這樣,因爲回報率迫使我把後一值「:」 ISO「;」。

public string checkInputParamters(string baseUrl, string owner, string documentId, string user, string secret, string type) 
    { 
     return ((null == baseUrl) || (string.Empty == baseUrl)) ? ExceptionsCodes.BASE_URL_CANNOT_BE_NULL_OR_EMPTY.ToString("g"); 
     return ((null == owner) || (string.Empty == owner)) ? ExceptionsCodes.OWNER_CANNOT_BE_NULL_OR_EMPTY.ToString("g"); 
    } 

任何想法?

+0

在第一個示例中,如果兩個if語句都爲false,則不返回任何內容。這會給編譯錯誤。你能糾正你的代碼嗎? – 2010-01-29 08:51:21

+0

更正,謝謝。 – 2010-01-29 08:53:40

+2

如果使用短手是什麼點?它使代碼變得醜陋難懂,尤其是在這種情況下,而上面代碼中的兩個'if'在第一眼就很清楚。 – 2010-01-29 08:54:43

回答

8
return String.IsNullOrEmpty(baseUrl) 
      ? YourBaseUrlException 
      : String.IsNullOrEmpty(owner) 
       ? YourOwnerException 
       : ""; 
8

另一個要注意的是,你可以用

String.IsNullOrEmpty(owner) 
+0

非常感謝! – 2010-01-29 08:54:00

0

你缺少一個默認返回更換

((null == owner) || (string.Empty == owner)) 

如果不是這兩種情況的任一種。

例如:

return String.IsNullOrEmpty(owner)?ExceptionsCodes.OWNER_BLAH.ToString("g"):(String.IsNullOrEmpty(baseUrl)?ExceptionsCodes.BASEURL_BLAH.ToString("g"):""); 
0

這是你腦子裏有什麼?

public string checkInputParamters(string baseUrl, string owner, string documentId, string user, string secret, string type) 
    { 
     return String.IsNullOrEmpty(baseUrl) ? 
      ExceptionsCodes.BASE_URL_CANNOT_BE_NULL_OR_EMPTY.ToString("g") : 
      (String.IsNullOrEmpty(owner) ? ExceptionsCodes.OWNER_CANNOT_BE_NULL_OR_EMPTY.ToString("g") : ""); 
    } 
0

該方法必須返回一些東西。我懷疑編譯的第一個例子。 (我看你現在改了它。)

結合其他兩個答案。

public string checkInputParamters(string baseUrl, string owner, string documentId, string user, string secret, string type) 
{ 
    return String.IsNullOrEmpty(baseUrl) ? 
     ExceptionsCodes.BASE_URL_CANNOT_BE_NULL_OR_EMPTY.ToString("g") 
    : (String.IsNullOrEmpty(owner) ? 
     ExceptionsCodes.OWNER_CANNOT_BE_NULL_OR_EMPTY.ToString("g") 
    : String.Empty; 


} 
0

imo,在這種情況下,使用第一個示例佈局的解決方案更具可讀性。我會更關心這裏的可讀性,而不是嘗試code-golf你的代碼。

殭屍解決方案交換String.IsNullOrEmpty(owner)將是一個不錯的提升。

0

我個人,如果不喜歡內嵌但這應該做的伎倆

  return (
       String.IsNullOrEmpty(baseUrl)? 
       ExceptionsCodes.BASE_URL_CANNOT_BE_NULL_OR_EMPTY.ToString("g"):(
        String.IsNullOrEmpty(owner)? 
        ExceptionsCodes.OWNER_CANNOT_BE_NULL_OR_EMPTY.ToString("g"): 
        string.Empty 
       ) 
      ); 

幾乎相同的其他人都在說,我只是想有(隱含的)()內聯IFS的清晰可見