
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

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

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 методы стоит делать только если компонент на столько мал что по его названию уже понятно что будет происходить и мы точно уверены что компонент не разрастется
Во всех остальных случаях лучше воспользоваться более подробным неймингом методов