[C#] Как трябва да действа един метод при подаден аргумент null?
Имаме следния код:
public string ShortenString(string input)
{
if (input == null)
{
throw new ArgumentException(nameof(input));
}
if (input.Length > Constants.MaxLength)
{
return input.Substring(0, Constants.MaxLength);
}
return input;
}
Както се вижда работата на този метод е да скъси до определена дължина даден стринг, който му е подаден. Въпросът е, че стрингът, който му се подава може да е null - тъй като това поле не е задължително. Въпросът е какво правим ако се подаде null?
Как е най-правилно -
1. Да оставим метода да хвърля ексепшън, когато се подаде null - както е в момента. Това означава, че трябва да се направи проверка дали подадения аргумент не е null във всички методи, които го викат. - тоест на много места един и същи код.
2. Вторият вариант е да правим проверка в самия метод за null и съответно, ако е null - може да връща празен стринг.
Спомням си това, което ни каза Наков - че един метод или трябва да свърши каквото имто му казва - или да хвърли ексепшън и съм малко раздвоена в случая.
Какъв би бил най-КПК подходът според вас в този случай?
Благодаря.
Ако аз сам си правех тази фунция, щях да си я направя както си искам и да сложа някакъв коментар, какво ще се случи при нулев стринг. Тъй като ми е по-важно апликацията да не гърми в рън тайм, нямаше да ползвам ексепшън, а в някакъв лог, ако е толкова важно да знам, че подаденият стринг е бил нулев. Освен това щях да екстендна Стринг.
Когато слагате минус, хубаво е и да се аргументирате защо го правите.
"Спомням си това, което ни каза Наков - че един метод или трябва да свърши каквото имто му казва - или да хвърли ексепшън".
Има и допълнение с пример след тези негови думи: "Все едно, аз като изпратя празен sms- да ми се ребутне телефона."
https://softuni.bg/trainings/resources/video/2044/video-10-oktomvri-2014-nakov-high-quality-code-sep-2014 12:45
С две думи, както Pilgrimage казва, всичко зависи от конкретната задача. Освен това щях да екстендна Стринг :)