Loading...
MiBuena avatar MiBuena 7 Точки

[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 - може да връща празен стринг.

Спомням си това, което ни каза Наков - че един метод или трябва да свърши каквото имто му казва - или да хвърли ексепшън и съм малко раздвоена в случая.

Какъв би бил най-КПК подходът според вас в този случай?

Благодаря.
 

Тагове:
0
C# OOP Advanced 02/12/2017 10:57:54
stoiko.bogev avatar stoiko.bogev 78 Точки

Exception се хвърля при неочаквано поведение. Ако в логиката на програмата очакваш, че ще се подава null като аргумент, можеш да направиш логика какво адекватно поведение да има в тази ситуация и да не хвърляш Exception. Ако ShortenString приема input отвън (от потребител), може да направиш метод който проверява този input и изобщо да не стига невалиден аргумент до ShortenString. Спoред мен не е добре да връщаш празен стринг от този метод, по-добре да връща null. Поведението му се очаква да скъси даден string, а не да създава string при несъществуващ такъв (null).

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.