少用 if 進(jìn)行普通意義上的參數(shù)驗(yàn)證
每次在寫(xiě) public 方法的時(shí)候第一件事就是參數(shù)驗(yàn)證。以往,都會(huì)有這樣的代碼出現(xiàn):
if (oneOfTheArgument == null)
{
throw new ArgumentNullException(
"oneOfTheArgument",
StringTable.ErrorClassNameArgNull);
}
但是方法的參數(shù)表有的時(shí)候比較長(zhǎng),邏輯判斷的組合也比較多,此時(shí)這種語(yǔ)句的數(shù)目有時(shí)多大6-7個(gè)。這樣的代碼喧賓奪主,可讀性差(從純數(shù)據(jù)的角度而言,圈復(fù)雜度也會(huì)比較高)。于是目前全部換成了這種寫(xiě)法:
oneOfTheArgument 是 null 那么拋出 ArgumentNullException. Error.Argument.IsNull(oneOfTheArgument); // 帶自定義消息提示的重載. Error.Argument.IsNull(oneOfTheArgument, StringTable.ErrorClassNameArgNull);
相應(yīng)的還可以有:
// 查看 value 是否為 null,或者僅包含空白字符,如果為 null, // 則拋出 ArgumentNullException,如果僅包含空白字符或者是 // string.Empty,則拋出 ArgumentException. Error.Argument.IsNullOrWhitespaceString(value, parameterName, message); // 如果 value 小于 minValue,則拋出 ArgumentOutOfRangeException. Error.Argument.LessThan(value, minValue, message); // 如果 value 在一個(gè)指定范圍之外,則拋出 ArgumentOutOfRangeException. Error.Argument.OutOfRange(value, minIncl, maxIncl, message); // 其他還有很多...
這樣,代碼顯得整潔了許多。
浙公網(wǎng)安備 33010602011771號(hào)