@oop_ru

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

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
использование инструмента А вместо более подходящего инструмента Б, потому что в языке Б просто нету.
Ну и тут ещё надо если уходить от статических методов, то надо придумать способы создавать объекты как-то и как-то реализовать среду исполнения. Обычно для этого ещё применяют т.н. метаклассы или просто классы, и всегда существующие системные объекты типа "виртуальная машина"

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
andretshurotshka?❄️кде
13.01.2018
06:46:39
andretshurotshka?❄️кде
13.01.2018
06:47:27
Неее ты че

Ilia
13.01.2018
06:47:51
> придумать способы создавать объекты оператором new?
Ну а в коде чего ты будешь этот оператор вызывать?

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
вариантов много

Так а как он поймет, какого класса именно надо объект создавать?
договоримся, что должен быть глобальный класс Application. про main() мы ведь как-то сумели договориться

Ilia
13.01.2018
06:52:38
или объявим Application системным абстрактным классом и будем от него наследоваться
Ну да, но это мы уже по кругу в обсуждении пошли, ты уже все понял, но заходишь на следующий круг

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
Ну это философский вопрос, одни думают, что статические методы это костыль, другие - что ООП это костыль! ?
Операции статических методов спокойно моделятся как stateless сервисы. Но у многих ошибки в ДНК не позволяют этого понять.

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

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

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

не не, я просто токсичный. случайно на ссылку наткнулся, думал тут есть что-то новое, а тут все еще насилуют старый труп.

K
13.01.2018
07:09:40
da horsie
13.01.2018
07:13:32
я вижу как обсудили )
ну так для чего нужны статические методы?

K
13.01.2018
07:14:00
ну так для чего нужны статические методы?
для поддержания уверенности в себе у людей, которые из-за ошибки в ДНК не могут дойти до нормального OOP.

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

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

Google
Sergey
13.01.2018
07:38:37
Для чего нужны статические методы?
когда тебе нужна просто функция в контексте класса, но вне жизненного цикла объекта этого класса

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
ну так для чего нужны статические методы?
Когда целый класс объектов любого подтипа в данном конкретном месте имеет одинаковое поведение.

И при этом логика не связана с каким-то конкретным объектом.

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

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
Нет, это сылка на неё именована, а не сама функция
Функция тоже именована const b = main log(b.name)

но кастылями они от этого не перестают быть
Костыль не оч удачный термин наверное, 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
https://www.amazon.com/Object-Thinking-Developer-Reference-David/dp/0735619654
Она стоит своих денег? Я просто так спрашиваю, покупать я ее конечно же не буду

Артур Евгеньевич
13.01.2018
19:05:18
Привет, киньте пожалуйста метериал где разбирают почему внедрение зависемостей через сеттеры это хуево
http://sergeyteplyakov.blogspot.ru/2014/11/di-vs-dip-vs-ioc.html в листай в конец, там блок Дополнительные ссылки и в нем три отдельных статьи по инъекциям черзе конструктор, сеттер, и свойство. Достаточно подробные.

Страница 450 из 785