русский
Germany.ruForen → Архив Досок→ Programmierung

Можно ли возвращать null из функции?

14.04.24 06:56
Re: Можно ли возвращать null из функции?
 
alex445 патриот
in Antwort uscheswoi_82 14.04.24 04:22, Zuletzt geändert 14.04.24 07:02 (alex445)
An empty object implies data has been returned, whereas returning null clearly indicates that nothing has been returned.

Additionally, returning a null will result in a null exception if you attempt to access members in the object, which can be useful for highlighting buggy code - attempting to access a member of nothing makes no sense. Accessing members of an empty object will not fail meaning bugs can go undiscovered.

Разница между исключением по наллу и исключением по пустому объекту лишь в том, что исключение по наллу уже встроено в систему, а по пустому объекту - ты можешь добавить сам. Вводя пустой объект, ты избавляешь себя от проверки на налл, но добавляешь необходимость проверки на пустой объект. Проверка на налл - одна простая операция. Проверка на пустой объект - зависит от реализации пустого объекта. Проверка на налл - универсальная операция, которая встречается много где и с которой все знакомы. Проверка на пустой объект в именно твоей бизнес-логике - специфическая операция, для которой нужно познакомиться с твоей бизнес-логикой.


Да и в любом случае формирование пустого объекта требует сначала проверки на налл (или на что там в БД считается за отсутствие объекта). Т.е. ты так и так делаешь проверку на налл, потом преобразуешь налл в пустой объект, потом делаешь проверку на пустой объект. И если ты всю эту херню делаешь в одной функции, то ты смешиваешь бизнес-логику и логику работу с другим слоем (база данных, например). Короче, ты привносишь много работы и мало смысла. Зато внешне это выглядит заумно - много слоёв, паттернов, схем, диаграмм для призентаций. Можно пилить такой проект в разы дольше, чем когда всё устроено проще. Но в реальности твои слои становятся связанными, теряется смысл введения этих слоёв, твои абстракции протекают. Вобщем, говнокод. Только не на уровне джуна, а на уровне сеньёра.

 

Sprung zu