Правда о MVC
Очередное ниспровержение основ? Ура.
Окей. А по каким принципам композитися store? Модель-контроллер можно сочетать с себе подобным, собирая куски кода из отдельных реализаций и используя их повторно. Что нам в этом плане предлагает state? Ведь недаром на же первой картинке много моделей и много контроллеров. Без декомпозиции от идеи тухло пахнет
Engineering Manager at Facebook, said that for their “sufficiently” large codebase and large organization, “MVC got really complicated really quickly,” concluding that MVC does not scale. The complexity of the system went exponential every time they attempted to add a new feature making the code “fragile and unpredictable.” This was becoming a serious problem for developers new to a certain codebase because they were afraid to touch the code lest they might break something. The result was MVC was falling apart for Facebook.
Facebook опубликовал экспериментальные данные — MVC не является инструментом для борьбы со сложностью.
Очередное ниспровержение основ? Ура.Просто хорошая ссылка для того, чтобы тыкать в нее носом любителей MVC.
Без декомпозиции от идеи тухло пахнетну да, лет через 30 до народа дойдет, что кроме статической типизации для борьбы со сложностью фиг что придумаешь. Следующие 30 лет будут пройдены в режиме набивания достаточного количество шишек, чтобы начать думать.
Ну у нас сейчас MVVM в примерно таком же состоянии. Но у нас дело не в самом MVVM, а в том, как его реализовали...
/**
* TodoActions
*/
var AppDispatcher = require('../dispatcher/AppDispatcher');
var TodoConstants = require('../constants/TodoConstants');
var TodoActions = {
/**
* @param {string} text
*/
create: function(text) {
AppDispatcher.handleViewAction({
actionType: TodoConstants.TODO_CREATE,
text: text
});
},
/**
* @param {string} id
*/
destroy: function(id) {
AppDispatcher.handleViewAction({
actionType: TodoConstants.TODO_DESTROY,
id: id
});
},
};
module.exports = TodoActions;
Блин, джава-программисты набежали в мой уютный ламповый джаваскрипт
Во-первых, серебрянных пуль не бывает, как и идеальных инструментов для борьбы со сложностями. Каждую технологию нужно уметь использовать. В том числе и технологии MVC. Я не знаю как там в фейсбуке, но подозреваю, что он болен вебом. И почти наверняка считает, что каждая страница - это всего один контроллер. Посмотри на дельфи, посмотри на Qt. Там MVC во все поля, но никто не жалуется. Так что вопрос не в технологии, а в применении.
кроме статической типизации для борьбы со сложностью фиг что придумаешь. Следующие 30 лет будут пройдены в режиме набивания достаточного количество шишек, чтобы начать думать.сказал глупость дважды.
Во-первых, кроме статической типизации придумали множество других инструментов для обеспечения программирования по контракту. Мне вот кажется, что умная система макросов и именование в лиспе может не меньшее, даже без типизации, которая там тоже есть, хотя и не вполне статическая.
Во-вторых, почему ты считаешь, что MVC не может быть типизирован?
И в-третьих, с чего ты взял, что упомянутый тобой диспатчер будет типизирован? Я обычно видел обратное, диспатчер принимает самый общий объект на вход, дальше парсит его и уже выдаёт заготовленное действие.
Там MVC во все поля, но никто не жалуется.вот на этот треш нельзя не жаловаться
http://www.martinfowler.com/eaaDev/uiArchs.html
Форму с двумя полями так ебануто программировать....
если да то тезис о практики применения верен.
ну и за примером наверное далеко ходить не надо
а можно ли назвать MVC скажем когда модель и контроллер платформонезависимые, а вью меняется от плтаформы к платформе ?Ну это можно называть некоторым расширением концепции MVC на мультиплатформенные инсталляции.
сказал глупость дважды.если ты не понял, то это не значит, что глупость.
Во-первых, кроме статической типизации придумали множество других инструментов для обеспечения программирования по контракту. Мне вот кажется, что умная система макросов и именование в лиспе может не меньшее, даже без типизации, которая там тоже есть, хотя и не вполне статическая.
тебе кажется, а я знаю что это не то, и уже обсуждали это
Во-вторых, почему ты считаешь, что MVC не может быть типизирован?
Это ты откуда взял?
И в-третьих, с чего ты взял, что упомянутый тобой диспатчер будет типизирован? Я обычно видел обратное, диспатчер принимает самый общий объект на вход, дальше парсит его и уже выдаёт заготовленное действие.
Опять какой-то бред мне приписываешь.
Во-вторых, почему ты считаешь, что MVC не может быть типизирован?хорошему типизированному коду MVC как пятая нога. MVC просто не нужен. А зачем обсуждать то, что не нужно...
см. мои посты по todomvs
откуда у тебя вообще такая привязанность к типам? Они же не разрешимые в общем случае. А большинство программ иногда использует ещё динамическое приведение типов, что сразу сбивает проверку на ноль. Типы - полезный инструмент, но не волшебный.
откуда у тебя вообще такая привязанность к типам?ну, имхо, это единственный механизм, который, действительно, помогает в борьбе с нарастанием сложности.
Они же не разрешимые в общем случае.
уже и такие хороши. Но, несомненно, там есть куда развиваться.
сбивает проверку на ноль.
проверка это минорная вещь, главное навигация и рефакторинг
Так что вопрос не в технологии, а в применении.Логика такая. Я слышал от разработчиков такой аргумент: это MVC, это крутой паттерн, это хорошо. А теперь я буду тыкать таких в эту статью, и обоснованно требовать объяснение, почему конкретный MVC хорошо и зачем он нужен. Т.е. как бы возвращаемся к истокам: зачем это всё? Часто девелоперы считают применения паттернов типа MVC как свой профессиональный рост, а тех кто им пытается возразить, считают не доросшими до их профессионального уровня. Вот таких задравших нос и опускает на землю эта ссылка.
ps: мне кажется, что этот паттерн не очень оправдан, когда есть много состояния, от которого не избавиться. Как раз похоже на случай интерфейса фейсбука. Но это мне именно кажется и можете меня разубедить.
ps: мне кажется, что этот паттерн не очень оправдан, когда есть много состояния, от которого не избавиться. Как раз похоже на случай интерфейса фейсбука. Но это мне именно кажется и можете меня разубедить.MVC - это паттерн для GUI, а не для состояния. Если есть значимое состояние - выноси его в отдельную сущность. Например, в шахматной программе текущую позицию, правила игры и AI я бы вынес в отдельный движок, а гуй отображал бы по-прежнему MVC.
И вообще, еще Фаулер написал, что MVC - это просто идея, что данные и бизнес-логику надо отделять от представления и юзер-интерфейса. Все остальное в MVC - нахрен никому не нужно.
Так что всех задравших нос смело посылай, по ссылке
Странно, что девелоперы в Фейсбуке решили заняться экспериментами
там не про тот скейл
окей, сказал А, говори и Б. То есть: где граница применимости этого самого MVC по твоему мнению?лучше вообще убрать MVC из лексикона общения. Наиболее эффективный способ общения — это использовать термины, которые реально существуют, это термины бизнеса и кода (на конкретном языке, который используется).
ps: мне кажется, что этот паттерн не очень оправдан, когда есть много состояния, от которого не избавиться. Как раз похоже на случай интерфейса фейсбука. Но это мне именно кажется и можете меня разубедить.
надеюсь ты понимаешь, что ASP.NET MVC к обсуждаемой теме не имеет отношение
Оставить комментарий
6yrop
http://www.infoq.com/news/2014/05/facebook-mvc-fluxКороль то голый. Наконец-то нашлись люди с достаточным авторитетом, чтобы высказать это. Как же медленно взрослеет IT индустрия. Я так и помру в детстве IT индустрии.