
Ilia
13.01.2018
06:32:48
Нет. Естественная причина существования статических методов - дать возможность что-то выполнять без предварительного создания объекта.

da horsie
13.01.2018
06:33:15

Ilia
13.01.2018
06:33:58
Но если обычных функций нет, то это причина

da horsie
13.01.2018
06:34:04
т.е. костыль

Google

Ilia
13.01.2018
06:35:19
т.е. костыль
Ну... Дай тогда определение что ты подразумеваешь под понятием костыль, тогда можно далее рассуждать.

da horsie
13.01.2018
06:38:09
если класс это тоже объект, то статических методов не нужно вообще

Ilia
13.01.2018
06:42:37

da horsie
13.01.2018
06:42:41
это мысли вслух

Ilia
13.01.2018
06:43:42

andretshurotshka?❄️кде
13.01.2018
06:44:02
КЛОС фор зе вин

Ilia
13.01.2018
06:44:44

andretshurotshka?❄️кде
13.01.2018
06:45:21
ftw

da horsie
13.01.2018
06:45:54
скорее wtf

Google

Ilia
13.01.2018
06:45:58

andretshurotshka?❄️кде
13.01.2018
06:46:39

da horsie
13.01.2018
06:46:56

andretshurotshka?❄️кде
13.01.2018
06:47:27
Неее ты че

Ilia
13.01.2018
06:47:51

da horsie
13.01.2018
06:48:15

Ilia
13.01.2018
06:48:51
Надо же иметь всегда какую-то печку, от которой программа плясать начинает

andretshurotshka?❄️кде
13.01.2018
06:49:19
IO

Ilia
13.01.2018
06:50:04
Вот есть у тебя некий абстрактный ООП язык ты на нем написал кучу классов, как это все теперь запустить?

da horsie
13.01.2018
06:50:10
инстанс класса пусть создает фреймворк
или объявим Application системным абстрактным классом и будем от него наследоваться

Ilia
13.01.2018
06:51:39
Так а как он поймет, какого класса именно надо объект создавать?

da horsie
13.01.2018
06:51:43
вариантов много

Ilia
13.01.2018
06:52:38

da horsie
13.01.2018
06:53:05
ну я пока понял, что статика - костыль
и еще понял, что меня смущало в статических методах php

Ilia
13.01.2018
06:58:31

Google

da horsie
13.01.2018
06:59:23

andretshurotshka?❄️кде
13.01.2018
07:00:02
НУ ТИПО НЕЙМСПЕЙС ДЛЯ ФУНКЦИЙ

da horsie
13.01.2018
07:00:40

Ilia
13.01.2018
07:00:50

K
13.01.2018
07:02:43

da horsie
13.01.2018
07:03:16
вот это ты мощно зашел

K
13.01.2018
07:06:02
вот это ты мощно зашел
Да я почитал повыше чятиг, там все споры да споры уровня epam senior. Половина не понимает, что такое инкапсуляция и в целом OOP. Пойду-ка я отсюда :)

da horsie
13.01.2018
07:06:31
мы тут уже целый год обсуждаем, все никак не договоримся

K
13.01.2018
07:08:31
ну так расскажи
О чем? Если я скажу, что инкапсуляция необходимо для поддержания корректного стейта инварианта объекта, чтобы не сломать логику приложения в обход бизнес требований, кто-то поймет? А тут уже обсуждали, что чем меньше в приложении стейт объектов тем лучше? Или срач immutable vs state был? Кто-то своим умом дошел до того, что желательно большинство объектов моделить как VO и immutable?
не не, я просто токсичный. случайно на ссылку наткнулся, думал тут есть что-то новое, а тут все еще насилуют старый труп.

da horsie
13.01.2018
07:09:14

K
13.01.2018
07:09:40

da horsie
13.01.2018
07:13:32

K
13.01.2018
07:14:00

da horsie
13.01.2018
07:14:33
слишком тонко для нашего цирка

K
13.01.2018
07:14:48
я не сомневался :)

Sergei
13.01.2018
07:16:40

da horsie
13.01.2018
07:17:32

Google

Sergey
13.01.2018
07:38:37

da horsie
13.01.2018
07:39:13

Sergey
13.01.2018
07:39:40
но если обратиться к истории, и вспомнить зачем именно были добавлены статики в тот же C++ - это меньшее время диспетчеризации вызовов
ну то есть следует учитывать язык. Скажем в java у тебя есть main рутина которая является точкой входа. К сожалению на момент старта java приложения у тебя не может быть объектов, ты уже там при старте все мутишь.
в этом отличие от того же смолтака где объекты не имели "центра".

da horsie
13.01.2018
07:45:55

Sergey
13.01.2018
07:46:23
ай не, я подумал... культ личности...

da horsie
13.01.2018
07:46:49
да, не забудь прикоснуться к великому

Jan
13.01.2018
09:05:13
И при этом логика не связана с каким-то конкретным объектом.

andretshurotshka?❄️кде
13.01.2018
09:09:39

Sergey
13.01.2018
10:06:46
как по мне - мы ищем логику в кастылях. Ну то есть зачем статика в C++ - потому что "быстрее", что было критично 20 лет назад. Зачем в Java - потому что в C++ это было (ну и опять же диспетчеризация происходит быстрее, что даже в android бэст практисах есть)
если посмотреть на тот же kotlin - там нет статических методов - но зато есть просто функции. Так что ты можешь сделать себе модуль Math с функциями типа cos/sin а не плодить util-класс.
но это как правило либо что-то низкоуровневое либо мы поленились разобраться какая сущность овтечает за начало жизненного цикла объекта (ну или просто захотели спрятать оператор new)


Sergey
13.01.2018
10:13:32
https://kotlinlang.org/docs/reference/object-declarations.html#companion-objects

Sergey
13.01.2018
10:16:07

Google

Sergey
13.01.2018
10:16:20
хотя по факту это такие же обьекты, которые можно куда-то передавать и даже имплементить интерфейсы

Alex
13.01.2018
11:34:44
Вот это вы упоролись, до 5 обсуждать статики.
я за коня. Использование static - дело семантики, а не только отсутствия this

Sergey
13.01.2018
11:35:51

Maksim
13.01.2018
11:36:19
подчеркнуть, что оно тут аще случайно затесалось, как по мне

Sergey
13.01.2018
11:36:32
"я статический метод, я существую потому что мой создатель поленился придумать мне владельца"

Maksim
13.01.2018
11:36:52
ну да

Sergey
13.01.2018
11:37:08
это как рассуждать о семантике Utils классов
дальше вся разница семантики сильно зависит от ограничений выбранного языка
но кастылями они от этого не перестают быть

Aleh
13.01.2018
13:08:09
но кастылями они от этого не перестают быть
Костыль не оч удачный термин наверное, utils классы со статичными методами это обычные процедуры без возможности полиморфизма. Нарушается куча принципов ооп и оод в угоду скорости компилятора и рантайма, и простоте использования, и наследству одного прекрасного языка с кучей плюсов)


Pavel
13.01.2018
18:48:27
Привет, киньте пожалуйста метериал где разбирают почему внедрение зависемостей через сеттеры это хуево

Kirill
13.01.2018
18:54:01
https://www.amazon.com/Object-Thinking-Developer-Reference-David/dp/0735619654

Pavel
13.01.2018
18:59:45

Артур Евгеньевич
13.01.2018
19:05:18