Deutsch

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

6921  1 2 3 4 5 6 7 8 все
AlexNek патриот27.04.24 15:24
AlexNek
NEW 27.04.24 15:24 
в ответ Срыв покровов 27.04.24 14:50
то у клиента нет адреса, это для меня самый что ни на есть повод кинуть исключение.

ну так это вроде в большинстве случае правильно. Операция отсылки письма без адреса бессмысленна, особенно когда сообщение должно быть.

Однако может быть проблема когда мы хотим посылать много сообщений, а уже у первого нет адреса.

alex445 патриот27.04.24 20:20
NEW 27.04.24 20:20 
в ответ AlexNek 27.04.24 15:24

Тогда это уже не отправка письма, а отправка очереди писем. Обычно создаётся лог, отчёт по проделанной очередью работе. Прерывать работу всей очереди из-за одной ошибки - ну это тогда зависимость элементов очереди должна быть.

AlexNek патриот27.04.24 22:22
AlexNek
NEW 27.04.24 22:22 
в ответ alex445 27.04.24 20:20
Тогда это уже не отправка письма, а отправка очереди писем.

У нас как была функция отправки одного письма так и осталась. Только хотелки новые появились.


Прерывать работу всей очереди из-за одной ошибки

А кто об этом подозревает? Тесты прошли, всё работало нормально.

Murr патриот28.04.24 04:12
Murr
NEW 28.04.24 04:12 
в ответ Срыв покровов 27.04.24 14:58

а криминалисты потом

------

Т.е. как и было написано - не пользователь...


руль должен быть повернут, но не повернулся.

------

Тебе полегчает если вместо поворота руля он останется в непонятном положении?

При этом криминалисты разведут руками - нихрена не оталось...

Программист коренной житель29.04.24 07:38
NEW 29.04.24 07:38 
в ответ AlexNek 26.04.24 19:14

Ну можно конечно удариться в формализм, но, как мне кажется, важнее иметь нормальный функционал.

Я бы сказал, что наличие дополнительного типа NullObject далеко не всегда оправдано (более того, может просто загромождать код).


В данном случае я не вижу необходимости строго придерживаться паттерна :)

Программист коренной житель29.04.24 07:49
NEW 29.04.24 07:49 
в ответ Бесконечный цикл 27.04.24 12:39
Извне разницы не будет видно и это только вопрос удобства

Не совсем так.

Во-первых, исключения дороже, чем просто возврат.

Во-вторых, на исключения ты обязан реагировать. Т.е. фактически тебе каждый вызов функции надо оборачивать в try ... catch. Это сделает код нечитаемым. А если где-нибудь забудешь обернуть, то предсказать место с которого продолжится программа будет нелегко :)

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


Так что исключения - это все таки для обработки нештатных ситуаций и их не следует применять для контроля работы программы.

MrSanders коренной житель29.04.24 10:27
NEW 29.04.24 10:27 
в ответ Программист 29.04.24 07:38
Я бы сказал, что наличие дополнительного типа NullObject далеко не всегда оправдано (более того, может просто загромождать код).

В принципе тут решение очень легко формализуется: надо переопределить метод - делаем подкласс. Не надо - оставляем то что есть. Если у нас immutable запись (без логики) зачем подкласс?

Fleitist гость30.04.24 17:18
NEW 30.04.24 17:18 
в ответ AlexNek 09.04.24 18:52
Можно ли возвращать null из функции?

Да

alex445 патриот01.05.24 10:41
NEW 01.05.24 10:41 
в ответ Fleitist 30.04.24 17:18, Последний раз изменено 01.05.24 10:45 (alex445)

В комментах не уважают старичков. Намекают на их популизм.


А разгадка проста. Все эти принципы существуют не в отдельности



а вместе



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

MrSanders коренной житель01.05.24 11:55
NEW 01.05.24 11:55 
в ответ alex445 01.05.24 10:41

На арене цирка всё те же. Ололёшенька и его клоны с хабра. Не понимающие чуть меньше чем ничего. Но мнение имеющие. Оне ж погромизды!

А вы ещё спрашиваете можно ли null возвращать. Тут пора спрашивать как Ололёшеньке ручки отрубить, чтобы он классов не накодировал, а то у этого разработчика "выпячивание" LSP на то же Dependency Inversion плохо влияет. Но как, Холмс? Нет ответа. Он прокукарекал, а там хоть не расцветай.

alex445 патриот01.05.24 13:20
NEW 01.05.24 13:20 
в ответ MrSanders 01.05.24 11:55, Последний раз изменено 01.05.24 14:34 (alex445)

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


А что с наллом, таки можно его возвращать или как? Последнее от вас было


Ну мое понимает null-объектка - это некий объект (совсем необязательно другого типа), который выполняет действия "по умолчанию" (или имеет состояние "по умолчанию")
Если совпадения нет, то все равно возвращается валидный объект, а не null, т.е. фактически null-объект.
Совершенно верно.

Т.е. у вас налл-объект выполняет какие-то действия или имеет состояние по умолчанию. А руки-то зачем прячете?.. )))

AlexNek патриот01.05.24 14:38
AlexNek
NEW 01.05.24 14:38 
в ответ alex445 01.05.24 13:20
Там было всё по солиду

Сомнения некоторые есть смущ Хотя, да иллюзия может быть.

Если проекту достаточно лет, то один фиг как он был изначально написан. Лучше от правок он не становится.

alex445 патриот01.05.24 14:56
NEW 01.05.24 14:56 
в ответ AlexNek 01.05.24 14:38, Последний раз изменено 01.05.24 14:58 (alex445)
Там было всё по солиду
Сомнения некоторые есть смущ Хотя, да иллюзия может быть.

Ну вот, опять дедушкины сказки. "Если вам кажется, что вы понимаете принципы SOLID, значит вы не понимаете принципы SOLID."


Когда каждый трактует как хочет, обсирая трактовки других, объясняя любые неудачи просто и со вкусом: "сам дурак!"... В помойку такие принципы. Только поляну для всяких инфоцыган и разводил содержать.

AlexNek патриот01.05.24 16:14
AlexNek
NEW 01.05.24 16:14 
в ответ alex445 01.05.24 14:56
объясняя любые неудачи просто и со вкусом: "сам дурак!"..

Не обязательно должны быть какие то крайности


Хотя мне понравилось объяснения одного писателя.

Вопрос: Вот вы пишете в книге 1, что Россия это богатая страна, а в книге 2, что бедная - где правда то?

Ответ: вот смотрите можем делать это, это и это - эта бедная или богатя страна, конечно богатая.

А вот смотрите - этого нет, этого нет и этого нет - это бедная страна или богатая, конечно бедная.

MrSanders коренной житель01.05.24 19:39
NEW 01.05.24 19:39 
в ответ alex445 01.05.24 13:20
Ну, глядя на шибко умных кодеров проекта, который я щас переписываю, я бы руки поотрубал кому-то другому.

А с чего ты взял что ты что-то понял? Ты ж Ололёшенька. Гора апломба и ноль знаний. Увидел старый грузовик и ругаясь что это придумали какие-то дураки начал проволокой приматывать к нему оглобли. А то лошадь запрячь некуда, а приказали шкаф перевезти.


Т.е. у вас налл-объект выполняет какие-то действия или имеет состояние по умолчанию.

А "по умолчанию" после "какие-то действия" ты не скопировал просто так, или потому что опять ничего не понял? Иди, полазь по интернету, поучись.

Fleitist гость02.05.24 09:18
NEW 02.05.24 09:18 
в ответ alex445 01.05.24 13:20
что солид обещал

Принципы не могут что-то обещать, они же не люди 🙄


Всё это нагромождение заумной хренятины лишь мешает переписывать код.

Я предполагаю, эта "заумная хрень" должна была обеспечивать безболезненную смену технологий, чтобы убрать потребность к переписыванию 🙂


реализовать всё с нуля на новых фреймворках

С какой частотой нужно проект переписывать с нуля? 🫣 Вы точно успеете переписать все с нуля до выхода следующего "современного" фреймворка? И бюджет на это получите?

alex445 патриот02.05.24 13:48
NEW 02.05.24 13:48 
в ответ Fleitist 02.05.24 09:18, Последний раз изменено 02.05.24 13:52 (alex445)
что солид обещал
Принципы не могут что-то обещать, они же не люди 🙄

Принципы существуют лишь в головах людей - они эти понятия и придумали. А обещали те, кто эти принципы озвучивали. Они же по сценам ходят и умные книжки с семинарами выпускают. И каждый из них трактует эти принципы по-своему, и у него всегда припасена пачка коротких и ёмких ответов, почему у вас солид не выходит и так вам и надо. Т.е. декларировать-то они могут всё по бумажке одинаково, как в священных книгах написано, но понимают под этим каждый своё.


Просто компьютерные науки существуют относительно недолго, а всякие солиды так и вообще недавно появились. Но по аналогии вполне может быть, что в будущем всё это дело расколется, появятся свои программерские протестанты, апостолы истинной веры, и прочие схизмы. В принципе, оно уже. Ну и по аналогии же придётся потом выбросить всю эту дрянь скопом на помойку, т.к. оно и в оригинале-то недотягивало, а в результате и подавно будет представлять из себя смесь маразматического догматизма с мракобесием. Истинно говорю вам, будет переписан "Чистый код" в новом варианте, но останутся почитатели ветхого "Чистого кода", и и тот, и другой будут люди сжигать в кострах, на которых будут мучаться еретики, не почитающие третьего, единственно правильного "Чистого кода", и не прошедшие собеседований в монастыри истинной веры.

alex445 патриот02.05.24 14:00
NEW 02.05.24 14:00 
в ответ Fleitist 02.05.24 09:18
реализовать всё с нуля на новых фреймворках

С какой частотой нужно проект переписывать с нуля? 🫣 Вы точно успеете переписать все с нуля до выхода следующего "современного" фреймворка? И бюджет на это получите?

Из истории этой программы, всё оставалось на старых технологиях лет 15. А если бы не требовали соблюдать многие старые подходы, то уже всё было бы переписано, и ещё лет 10 можно было бы сидеть на попе ровно, на лайтовой поддержке этого кода. А потом снова всё переписать - так же легко и безболезненно по сравнению с рамками, которых понаставили эти ваши "правильные подходы".


Ну и требование, чтобы стиль кода оставался, как в старых модулях написано, чтобы преемственность и всё такое. Т.е. никакого тебе нового синтаксиса, особенно сокращающего простыни местами раза в два-три. Это потому, что безболезненная смена технологий, да.

AlexNek патриот02.05.24 19:13
AlexNek
NEW 02.05.24 19:13 
в ответ alex445 02.05.24 13:48, Последний раз изменено 02.05.24 19:14 (AlexNek)
А обещали те, кто эти принципы озвучивали.

было еще хорошо, что бы кто то хоть раз их дослушал до конца и чего то понял смущ

Но похоже не будет ни первого, ни второго спок даже сухого поцелуя не останется.

Не знал, не видел, но осуждаю.

alex445 патриот02.05.24 19:28
NEW 02.05.24 19:28 
в ответ AlexNek 02.05.24 19:13

"и у каждого из них всегда припасена пачка коротких и ёмких ответов, почему у вас солид не выходит и так вам и надо"

1 2 3 4 5 6 7 8 все