@oop_ru

Страница 782 из 785
Evgeniy
22.10.2018
19:44:57
Поправьте если я ошибаюсь, но ключевая позиция фп - это работа с данными в иммутабельном виде а ключевая позиция ооп - когда данные представляют собой живой граф объектов. То есть, с ооп, когда отдельная функция получает какой-то глубокий объект этого графа то она может сохранить этот объект в замыкании и со временем свободно обновлять поля этого объекта и актуальные изменения увидят все другие функции которые также хранят ссылку на этот объект. А подход иммутабельности и отсуствия сайдэффектов в фп предполагает что мы должны вернуть новый объект после его изменения но помимо этого также должны рекурсивно заменить всех родителей новыми объектами (потому что у них нужно изменить поле ссылающееся на новый объект ребенка) а это добавляет неудобств в при появлении циклических ссылок друг на друга потому что их нужно хранить через айдишники на эти объекты (иначе будут рекурсивно пересоздаваться все связанные по ссылке объекты и результате получим что чуть ли не весь граф объектов будет пересоздан заново). Например в мессенджере когда есть объект юзера со списком чат-комнат и каждая такая чат-комната ссылается на объект юзера и также на объект самой комнаты то с ооп мы можем просто хранить эти объекты в виде вложенных объектов и ссылок и удобно получить например список чатов юзера user.chatRooms.map(cr=>cr.room)а с фп придется дополнительно джойнить данные получая каждый объект чата по его айдишнику из глобального хеша user.chatRoomsIds.map(id=>globalHash.get(id)).map(roomUser=>globalHash.get(roomUser.roomId))что добавляет некоторой неясности в код. А когда функция захочет обратиться к более глубоким объектам по цепочке то код с фп становится еще сложнее Например есть приложение с кучей вложенных сущностей - юзер может создавать папки, внутри папок проекты, внутри проектов задачи и к задачам может создавать подзадачи то функция которая получает объект подзадачи и ей нужно вычислить приоритет на основе приоритета папки в которой эта подзадача находится то ей по сути нужно будет от объекта задачи добраться до объекта папки через все промежуточные объекты. И если в ооп это можно записать просто и наглядно subtask.task.project.folder.priorityто с иммутабельным подходом нужно будет вытаскивать каждый промежуточный объект из глобального хеша и код становится совсем не наглядным globalHash.get(globalHash.get(globalHash.get(subtask.taskId).projectId).folderId).priorityИ в реальных приложениях код бизнес-логики будет сплошь и рядом увешан кодом постоянного вытаскивания нужных объектов по их айдишникам из хеша и в итоге превращается в ненаглядную лапшу.
Immutable object не слышал Для начала таких фундаментальных заявлений не плохо бы понять чем декларативное от императивного отличается, а уже потом к ооп vs фп

First
22.10.2018
19:45:53
А по факту, я хз че вы собрались обсуждать про > ооп vs фп

Хуй пойми че vs матан (Для пхпшников: классы vs блять, сложна, нахуй)

Google
Evgeniy
22.10.2018
19:51:39
Потому что можно ещё статься на тему процедурное vs объектно ориентированное

Сраться*

Anton
22.10.2018
19:52:16
Процедурки форевар!

Anton
22.10.2018
19:53:47
Я наркоман, у меня асинхронные команд басы на пыхе

И сагами сверху помазать

Yury
22.10.2018
19:55:38
Я наркоман, у меня асинхронные команд басы на пыхе
Когда работодатель выбирает пых, потому что проще будет разобраться другим и привлечь разрабов, но еще не знает, что ты ему там напишешь на пыхе)

Anton
22.10.2018
19:56:36
Это не на работе, это для души :)

Yury
22.10.2018
19:57:21
А ну слава пэхэбогу)

Anton
22.10.2018
19:57:21
Хотя вот некоторые (не буду показывать пальцем @desper1989) прониклись

Но это уже на их совести

Google
Anton
22.10.2018
19:58:01
Нельзя просто взять и перестать обмазываться сагами

Bohdan
22.10.2018
20:00:15
Я наркоман, у меня асинхронные команд басы на пыхе
я ж наркоманистей, у меня синхронные)

дерьмо, но я как та свинья

Anton
22.10.2018
20:01:03
Мигрируем в шарпы, там все для людей

Sergey
22.10.2018
20:02:06
расскажешь потом историю успеха как ты при помощи асинхронных саг перевел проект с пыхи на шарпы)

Maksim
22.10.2018
20:03:13
Хотя вот некоторые (не буду показывать пальцем @desper1989) прониклись
И для этого мне не понадобилось валить на шарп, да)

Anton
22.10.2018
20:04:14
расскажешь потом историю успеха как ты при помощи асинхронных саг перевел проект с пыхи на шарпы)
Зачем переводить? Оно того не стоит. Можно просто взять шарпы и писать :)

Yury
22.10.2018
20:05:09
Этот известный интероп шарпа с пыхом

Anton
22.10.2018
20:11:05
Да, пожалуйста: https://www.peachpie.io/

Sergey
22.10.2018
20:13:31
найс

Maksim
22.10.2018
20:19:29
Бля)

Какая любопытная штуковина))

Dmitriy
22.10.2018
20:21:16
Госпади, за что???

Sergey
22.10.2018
20:24:32
Да, пожалуйста: https://www.peachpie.io/
это надо @mkusher убедить что мол f#/c# лучше чем тайпскрипт.

а то у нас уже хитрые планы как мигрировать за счет webassembly

Sergey
22.10.2018
20:26:28
Он топит за ts?!
он слишком благоговеет перед дартом, мы не смеем на нем писать

Anton
22.10.2018
20:26:39
function call<TS extends any[], R>(fn: (...args: TS) => R, ...args: TS): R { return fn(...args); } Какие еще доказательства нужны?

First
22.10.2018
20:26:46
Как вы на нем пишите вообще

Google
Denis
22.10.2018
20:28:55
всё же лучше чем на жс без типов

First
22.10.2018
20:29:20
Dmitriy
22.10.2018
20:29:50
flow недостаточно объектно ориентирован

Denis
22.10.2018
20:29:51
Но, flow...
не всегда есть возможность на нём писать

First
22.10.2018
20:30:02
flow недостаточно объектно ориентирован
Госпади, шо за страшные слова

Dmitriy
22.10.2018
20:30:08
нужно больше интерпрайза!)

всем java :)

Denis
22.10.2018
20:30:19
я ангуляр пишу на работе вообще

Sergey
22.10.2018
20:30:25
Denis
22.10.2018
20:30:26
какой флоу там?)

First
22.10.2018
20:30:28
всем java :)
* процедурщины

Dmitriy
22.10.2018
20:30:46
Sergey
22.10.2018
20:30:51
я ангуляр пишу на работе вообще
тип ты в команде разработчиков ангуляра или ты на ангуляре формы накидываешь?

First
22.10.2018
20:30:52
scala?)
Респект таким!

Denis
22.10.2018
20:31:23
тип ты в команде разработчиков ангуляра или ты на ангуляре формы накидываешь?
приложения на ангуляре, лень было писать, формы накидываю)))

ангуляр устраивает на самом деле, приходишь на любой проект а там DI, RxJS, какие-никакие типы, CDK чтобы в тысячный раз какой-нибудь оверлей самому не писать и не выбирать ui фреймворки

Denis
22.10.2018
20:34:03
реактивные формы из коробки

меньше трештолка среди того че юзать че не юзать

Sergey
22.10.2018
20:34:27
реактивные формы из коробки
можешь не оправдываться. Как там ng ivy? релизнули уже?

Google
Anton
22.10.2018
20:34:28
Sergey
22.10.2018
20:34:47
Это как раз TS...
ну то есть TS лучше... оуке

Denis
22.10.2018
20:34:59
можешь не оправдываться. Как там ng ivy? релизнули уже?
нет)))) в 7 версии его не будет по дефолту

его включить можно уже сейчас

он вроде как написан по спеке уже полностью

они только хотят подольше потестить обратную совместимость

Anton
22.10.2018
20:35:34
Чем тут лучше? Это же мрак темлейтов с плюсов. Я две минуты компилил эти строчки в голове

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