@JSlang

Страница 540 из 2237
Aleh
10.01.2017
14:50:44
я тебя не понимаю, как ты узнаешь в твоем случае , что запустится анимация?

если метод называется runPressAnimation

Oleg
10.01.2017
14:50:55
По имени метода?

Aleh
10.01.2017
14:51:03
а где ты увидишь имя метода?

Google
Oleg
10.01.2017
14:51:35
В неком компоненте у тебя на клик написано runPressAnimation

Aleh
10.01.2017
14:51:46
ага, т.е. я читаю код компонента?

Oleg
10.01.2017
14:51:50
Да

Aleh
10.01.2017
14:52:01
тогда я вижу код метода onClick

Oleg
10.01.2017
14:52:08
В том то и дело - читая код компонента ты знаешь какие будут сайд-эффекты

Aleh
10.01.2017
14:52:16
и все это занимает 30 строк вместе

Oleg
10.01.2017
14:52:42
То есть перемешка бизнес-логики и отображения?

Процедурный подход?

Aleh
10.01.2017
14:53:15
шта?

я предлагаю отделить

логику работы анимации, от логики обработки события клика

и других событий

Oleg
10.01.2017
14:54:45
Вот конкретный пример - есть конкртеная вью, в ней содержатся кнопки. Что будет лучше - 100500 значений аля onClickMySuperButton или на каждой кнопке имена методов вида submitForm, playMusic, runMyScript и тп?

Google
Aleh
10.01.2017
14:55:11
если у вас там 100500 значений, то вы проиграли

Oleg
10.01.2017
14:56:01
То есть сложные формы это что-то необычное?

Aleh
10.01.2017
14:56:17
декомпозиция, все дела...

компоненты там

если у вас есть что-то большое, то это "скорее всего" проблема

submitForm и playMusic методы рядом простите cohesion тут примерно как у класса Manager или файла utils

Oleg
10.01.2017
14:57:12
То есть 100500 компонентов по одному на каждую кнопку в каждом котором один и тот же метод onClick который делает каждый раз что-то новое о котором ты не узнаешь не открыв каждый этот компонент и не прочитав код?

Но наверное я знаю почему такой тред вообще возник

Есть ещё особый кейс

Когда мы осмысленно пишем имя компонента, а там уже типичные onClick и 100500 подобных методов. И когда ты смотришь на компонент submitButton ты в целом то догадываешься что делает его обработчик onClick

Но про такой кейс я писал выше

Мол можно если скоп исполнения ясен

Gordey
10.01.2017
15:06:49
получается у кого работать после праздников? чет ваще тяжко идет

даже читать вас не могу

Aleh
10.01.2017
15:07:29
и да, 100500 компонентов с явной зоной ответственности > один god object

Oleg
10.01.2017
15:08:14
Вот мы так сейчас на конкретных примерах то далеко уйдем - потому что конкретные у нас у всех будут разные ?

Aleh
10.01.2017
15:08:28
про music ты сам предложил)

Oleg
10.01.2017
15:08:44
Но могут быть ещё такие подходы как MVC с их контроллерами

Google
Gordey
10.01.2017
15:09:25
блин, вас не перебить

Oleg
10.01.2017
15:09:25
Хотя это мы так совсем далеко уйдем

Aleh
10.01.2017
15:10:21
Но могут быть ещё такие подходы как MVC с их контроллерами
давай под mvc подразумевать redux+react, чтобы говорить о чем-то конкретном, потому что о варианте дедушки Тругве сейчас не выйдет

Но могут быть ещё такие подходы как MVC с их контроллерами
и mvc подразумевает разбиение на очень маленькие части

Alexander
10.01.2017
15:13:06
Всем привет, нужна помощь с Яндекс.Картами, не могу понять в чем ошибка самой либы Яндекса. https://jsfiddle.net/frontenddeveloping/936drznz/ Спасибо!

Oleg
10.01.2017
15:14:24
давай под mvc подразумевать redux+react, чтобы говорить о чем-то конкретном, потому что о варианте дедушки Тругве сейчас не выйдет
Да тут даже не в этом дело. Тут всё-таки видимо дело в том что о разных подходах в принципе говорим. В целом если имеется микрокомпонент который в названии имеет исчерпывающее описание а что он делает - да, всякие методы вида onName более-менее, но подходят. Причем он можнет быть микрокомпонентом на своем текущем уровне, при этом наследуя 100500 функциональности. Правда это порождает в некоторых случаях проблему расширяемости, если компонент вдруг начнет делать чуть больше чем простейшие действия и иметь чуть болше логики чем есть в имени этого компонента. Особенно это касается сайд-эффектов.

А если у нас есть некий контроллер, который перехватывает эвенты компонентов и содержит бизнес-логику - вот тут уже просто онклики не подойдут

Aleh
10.01.2017
15:15:53
я бы сделал картинку с доктором, но мне лень(

Oleg
10.01.2017
15:16:26
у вас год-обжект
И как же оно вдруг стало год-общектом?

Aleh
10.01.2017
15:16:59
может еще не год, но точно с завышенной самооценкой, и перехватывает события, и бизнес-логикой рулит

Aleh
10.01.2017
15:17:04
еще возможно немного вью правит

ляпота

Oleg
10.01.2017
15:17:32
Ну вот у меня есть таблица

С редактированием ячеек

И несколькими кнопками отправки там, отмены данных и всего такого

Вопрос

Как такое адекватно контролить не используя единого контроллера?

То есть не воспринимая редактируемый грид как единый компонент?

Google
Stepan
10.01.2017
15:21:49
А чем в этом случае плохо использование единого контроллера? Так с ходу ничего в голову не приходит

Aleh
10.01.2017
15:22:07
То есть не воспринимая редактируемый грид как единый компонент?
есть единый компонент SpecificGridForSomeScreen, который в себе рендерит грид со строками, есть эти самые строки, в которых всякие onFirstAction onOtherAction. SpecificGridForSomeScreen мапит формат onFirstAction для строки в someApplicationLayerAction из приложения

итого вся задача единого контроллера простой мапинг, никакой логики в нем нет

Oleg
10.01.2017
15:23:08
Ну то есть единый контроллер таки есть

Aleh
10.01.2017
15:23:19
а бизнес-логики в нем нет

Oleg
10.01.2017
15:23:36
А куда же её положить то?

Aleh
10.01.2017
15:23:44
в модель?

Admin
ERROR: S client not available

Oleg
10.01.2017
15:24:16
То есть делегируем бизнес-логику в модель

Andrey
10.01.2017
15:24:27
в модель?
И в чем толк от такого перемещения?

Oleg
10.01.2017
15:24:36
Ну тоже самое, только вызовы будут пробегать через контроллер в модель

Andrey
10.01.2017
15:24:40
Разве модель не должна отвечать только за данные

Aleh
10.01.2017
15:24:46
И в чем толк от такого перемещения?
в том, что бизнес-логика может быть протестирована и использована отдельно от view?

Oleg
10.01.2017
15:25:00
Да и с контроллером также

Если логика будет там

Andrey
10.01.2017
15:25:13
Но а на сколько хорошо, что мы в модель перенесли логику?

Aleh
10.01.2017
15:25:14
он привязан к структуре ивентов от view

Oleg
10.01.2017
15:25:38
А если селекторами привязана?

Или эвенты слушает?

Google
Oleg
10.01.2017
15:25:58
От вью

Ну и в целом таки получается просто перепасовка

Aleh
10.01.2017
15:27:07
Oleg
10.01.2017
15:27:46
Вью оповестила всех, кто знал как - тот подключился к прослушке

Но это уже могут быть нюансы всяких там фреймворков и прочего

Aleh
10.01.2017
15:28:05
ну вот, контроллеру нужно знать про шину или еще какой-то интерфейс общения с view

Andrey
10.01.2017
15:28:10
Т.е. у нас толстые модели, тонкие контроллеры?

Aleh
10.01.2017
15:28:12
и передавать это в модель

Т.е. у нас толстые модели, тонкие контроллеры?
вообще у нас не должно быть ничего толстого)

и передавать это в модель
с нужными преобразованиями

Andrey
10.01.2017
15:29:13
вообще у нас не должно быть ничего толстого)
Тогда нужно разбивать толстые модели на более мелкие и атомарные?

Как избежать этих толстяков?)

Aleh
10.01.2017
15:30:45
декомпозицией

Oleg
10.01.2017
15:31:08
Есть 2 подхода - тонкие модели и толстые контроллеры, и наоборот - толстые модели и тонкие контроллеры. Но есть конечно и веселее варианты. Вью, отвечающие только за отображение и эвенты, вью-контроллеры, ловящие эвенты вью, знающие их структуру, занимающиеся первичной обработкой. Вью-модели, хранящие данные, адаптированые под вью. А также подписанные на полноценные модели и при изменении данных в моделе - получающие их, конвертирующие под вью и оповещающие вью. Ну и контроллеры верхнего уровня, хранящие конкретную бизнес-логику. А полноценные модели лишь как хранилище данных, общающиеся и с сервером.

Подход с делением на 5 частей.

Aleh
10.01.2017
15:32:28
тонкие модели/толстые контроллеры это процедурщина

да, так тоже делают

Oleg
10.01.2017
15:32:52
Где-то даже в википедии есть шутка про PHP и толстые модели

Но суть сводится к тому что всякие onName методы стоит делать только если компонент на столько мал что по его названию уже понятно что будет происходить и мы точно уверены что компонент не разрастется

Во всех остальных случаях лучше воспользоваться более подробным неймингом методов

Страница 540 из 2237