2014-01-25 56 views
-2

我有一組方法接收用戶輸入爲字符串,並將其解析爲每個方法的標題處的小數,整數等。所以,我有相同的代碼重複多次在每一個方法,例如:TryParse - 最佳實踐

public ..... CreateOrder(....., string rawSourceAmount) 
{ 
    decimal? sourceAmount2 = rawSourceAmount. 
     TryToDecimal(XUtils.DecimalFormat(2)); // extension method, wrapper of Decimal.TryParse, returns null if fails 
    if (sourceAmount2 == null) 
     throw new XBadSourceAmountException(
      sourceSystem.Id, rawSourceAmount); 
    decimal sourceAmount = sourceAmount2.Value; 

    .......... 
} 

爲什麼我有sourceAmount2sourceAmount?因爲稍後在方法體中我主動使用sourceAmount,並且我不想每次都寫sourceAmount.Value。有什麼辦法來簡化這個模板代碼?

所以,任務是:我有string rawSourceAmount。我需要decimal sourceAmount和一個地方來拋出不同的例外。我不需要sourceAmount2

回答

1

然後改變TryToDecimal method.Make它bool你的返回類型和輸出參數添加到您的方法,那麼你可以直接檢查返回結果,您不需要額外的定義可空變量:

decimal sourceAmount; 
if(!rawSourceAmount.TryToDecimal(XUtils.DecimalFormat(2),out sourceAmont) 
{ 
    throw new XBadSourceAmountException(
     sourceSystem.Id, rawSourceAmount); 
} 
+0

謝謝。 @pid消息之後已經做了相同的代碼。 – Denis