da horsie
12.01.2018
23:35:42
Для чего нужны статические методы?
Dan
12.01.2018
23:37:38
В каком контексте?
da horsie
12.01.2018
23:38:16
да в любом. Когда их применение оправдано? Когда они - единственный способ?
Chupa
12.01.2018
23:39:01
Я контейнер и инверсию зависимостей везде использую, и как-то не нужны они совсем стали.
Google
Evgenii
12.01.2018
23:39:41
Chupa
12.01.2018
23:39:52
Чет глупость написал вначале
da horsie
12.01.2018
23:40:10
Вот есть у меня метод, который не использует this. Есть ли хоть одна причина делать его статическим?
melancholiac
12.01.2018
23:40:43
не думаю
Dan
12.01.2018
23:40:56
da horsie
12.01.2018
23:41:12
melancholiac
12.01.2018
23:41:14
какая то неоднородность методов будет если один всего
но это не точно
Chupa
12.01.2018
23:41:21
Какой-нибудь фабричный метод объекта, который создает сам себя должен быть статичным
Dan
12.01.2018
23:43:18
вот! зачем?
Есть две теории. Первая теория базируется на учениях МакКоннелла, Фаулера и Мартина. Вторая - на собственных эмпирических предпочтениях.
Если ты больше тяготеешь к красивой и изящной стилистике и придерживаешься стайлгайдов - обращай внимание на контекст и соседние методы.
А если ты пишешь сам по себе - делай как считаешь нужным. В любом случае будешь прав.
da horsie
12.01.2018
23:43:58
Dan
12.01.2018
23:44:11
Опять же, если ты говоришь в контексте джавы, то там понятно почему метод должен быть статичным.
da horsie
12.01.2018
23:44:59
Google
Dan
12.01.2018
23:45:20
ну будем говорить о java-подобных языках, которых много
Нет, я конкретно именно о Java.
Модификатор static в Java напрямую связан с классом, если поле статично, значит оно принадлежит классу, если метод статичный, аналогично — он принадлежит классу. Исходя из этого, можно обращаться к статическому методу или полю используя имя класса.
Chupa
12.01.2018
23:45:35
в php можно через static вместо self возвращать B, а не A
Dan
12.01.2018
23:45:53
В других языках это реализуется другими способами, а иногда пропускается вообще
В php можно вообще всё делать, там полная свобода.
Ну и опять же, если речь о компилируемых языках, то статический метод будет обрабатываться только в контексте конкретного класса. А не статический будет global wide
da horsie
12.01.2018
23:46:59
Dan
12.01.2018
23:47:37
Нет. Статические методы не должны наследоваться по-определению. Какой тогда в них смысл?
Хотя опять же, это в теории и по словам опытных товарищей, написавших много книжек по коду и его "красоте"
Ты в праве использовать любые стили. Хоть венгерскую нотацию, плевать.
da horsie
12.01.2018
23:48:40
Aleh
12.01.2018
23:48:54
Chupa
12.01.2018
23:50:35
Я не понял смысла на самом деле того, что изображено
da horsie
12.01.2018
23:52:10
Sergey
12.01.2018
23:52:58
вот! зачем?
Чтоб лишний объект не аллоцировать для вызова?
Chupa
12.01.2018
23:53:38
Искал про Late static binding в java, а его нет оказывается
f4rt~
12.01.2018
23:54:20
обычно по долгу службы сталкиваешься с тем, что статика это в основном поганые хелпер классы, фасады и прочее
da horsie
12.01.2018
23:54:46
под ооп я имею в виду обывательское понимание "как в жава"
Google
f4rt~
13.01.2018
00:02:27
da horsie
13.01.2018
00:03:34
чтобы связи в нужную сторону направить
Chupa
13.01.2018
00:05:07
da horsie
13.01.2018
00:05:24
принцип инверсии зависимостей
f4rt~
13.01.2018
00:05:27
ну я понял,инверсированные стрелки зависимостей, на интерфейс ага.
что тогда из этого можно предположить, когда нужны/не нужны статические классы?
когда тебе сознательно нужно нарушить инкапсуляцию?:D
da horsie
13.01.2018
00:05:54
и будем считать, что у нас есть перегрузка методов, так что "именованные конструкторы из пхп" не нужны
Aleh
13.01.2018
00:12:49
da horsie
13.01.2018
00:13:49
Aleh
13.01.2018
00:14:39
если пользователи регистируются, то пусть это так и называется
da horsie
13.01.2018
00:15:26
f4rt~
13.01.2018
00:15:28
интересно как тогда в домене выглядит new Human(new Busket(new Product)))
Aleh
13.01.2018
00:15:42
da horsie
13.01.2018
00:16:13
Aleh
13.01.2018
00:16:45
или имени?
da horsie
13.01.2018
00:16:52
метода
Google
Aleh
13.01.2018
00:17:02
да, создает корзину
da horsie
13.01.2018
00:17:15
получается, что он две вещи делает: 1) создает корзину и 2) назначает ее покупателю
так?
f4rt~
13.01.2018
00:17:34
намек на SRP ?
Aleh
13.01.2018
00:17:37
в случае. когда этот бизнес-процесс именуют "покупатель взял корзину" или типа того
da horsie
13.01.2018
00:17:40
иначе в чем отличие от new?
Aleh
13.01.2018
00:17:48
названием
new не имеет отношения к домену, pick - имеет
а new вообще запрещен
f4rt~
13.01.2018
00:18:30
ага как и class
Aleh
13.01.2018
00:18:30
приватный
f4rt~
13.01.2018
00:18:33
call Bugaenko
Aleh
13.01.2018
00:18:42
класс можно)
da horsie
13.01.2018
00:18:56
Aleh
13.01.2018
00:19:07
ну и new можно, просто есть куча ситуаций, где можно гораздо лучше и достаточно дешево сделать)
я хочу дать ему имя)
da horsie
13.01.2018
00:19:57
тогда почему pick(), а не create()?
Aleh
13.01.2018
00:20:14
потому что бизнес говорит pick
это у них так называется
Google
Aleh
13.01.2018
00:20:28
и когда новый разработчик будет спрашивать - ему объяснят
причем смогут объяснить даже не разработчики
da horsie
13.01.2018
00:20:42
то есть суть просто в переименовании "new" ради ubiquitous language
Aleh
13.01.2018
00:21:32
да
da horsie
13.01.2018
00:22:53
ну ок, соглашусь. хотя пример невероятный, как по мне)
Aleh
13.01.2018
00:23:39
наличие доменной области?))
da horsie
13.01.2018
00:23:51
нет, конкретно переименование операции new
Like
13.01.2018
00:24:39
Эт, доброй ночи :)
Я влезу со своим, вы не против?)
da horsie
13.01.2018
00:24:45
доменный язык vs шок от приватного констркутора... ну хз такое себе
Aleh
13.01.2018
00:25:08
da horsie
13.01.2018
00:25:46
ну ок ок
я готов допустить, что где-то упарываются доменным дизайном до такой степени.
Sergei
13.01.2018
00:26:53
da horsie
13.01.2018
00:27:06
наверно можно и до такого докатиться, если все остальные проблемы решены
Aleh
13.01.2018
00:27:21
ну т.е. можешь начать использовать прямо сейчас бесплатно, прям лайфхак)
da horsie
13.01.2018
00:28:35
мое мнение)
Aleh
13.01.2018
00:29:27
da horsie
13.01.2018
00:29:29
возможно просто у меня психика травмирована
Aleh
13.01.2018
00:29:43
а это задача минуты или 5