Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

.NET und C# ohne Web?

20.05.21 09:42
Re: .NET und C# ohne Web?
 
Программист коренной житель
в ответ Murr 20.05.21 09:10, Последний раз изменено 20.05.21 09:44 (Программист)
Какая разница что и как там внутри? Нет выброса исключений из функции и точка.

Разница в том, что считать ошибкой. В случае ошибки функция должна выбрасывать исключение. Если в случае ошибки функция возвращает null, то нельзя сказать, является ли null нештатной ситуацией.


надо тебе проверить как распарсилось - проверяй
if(!parsedValue.HasData) { /*obrabotka oshibki */}

Зачем городить кучу хрени со сложностями?

Все это мило, но код превратится во что-то слабо читаемое, если тебе надо будет распарсить десяток строк:

Сравни твой вариант:

int? parsedValue = int.Parse (strVal1);
if(!parsedValue.HasData)
 return null;
someObject.Val1 = parsedValue.Value;
parsedValue = int.Parse (strVal2);
if(!parsedValue.HasData)
 return null;
someObject.Val2 = parsedValue.Value;
parsedValue = int.Parse (strVal3);
if(!parsedValue.HasData)
 return null;
someObject.Val3 = parsedValue.Value;
parsedValue = int.Parse (strVal4);
if(!parsedValue.HasData)
 return null;
someObject.Val4 = parsedValue.Value;
parsedValue = int.Parse (strVal5);
if(!parsedValue.HasData)
 return null;
someObject.Val5 = parsedValue.Value;

return someObject;


и вариант с исключением:

try
{
    someObject.Val1 = int.Parse(strVal1);
    someObject.Val2 = int.Parse(strVal2);
    someObject.Val3 = int.Parse(strVal3);
    someObject.Val4 = int.Parse(strVal4);
    someObject.Val5 = int.Parse(strVal5);
    return someObject;
}
catch (Exception ex)
{
    logger.Error ("Can't parse value", ex);
    return null;
}


честно говоря, за твой вариант с nullable int'ом отрывать руки. ИМХО :)

 

Перейти на