Слишком много заблуждений в одной статье. Видно что автор с технологией не знаком.
Поменьше понтов и трёпа, юноша! Во-первых, статья явно изобилует техническими фактами, чтобы говорить, что «автор не знаком» — знаком и ещё как!
Во-вторых, «заблуждения» — только в вашем видении 2014-го года и ТОЛЬКО применимо к новейшим продуктам. Касательно даже WF 4.0 это не заблуждения, а ФАКТЫ. Извольте не бросаться словами, не имея на то причин и не перевирать оригинальный смысл статьи. В ней конкретно сказано, с какими продуктами работал автор и конкретные проблемы. Хотите покритиковать? Цитируйте, приводите контраргументы применительно именно к этим версиям. А рассуждать «микрософт что-то там написала ещё лучше, ещё шелковистее» — не надо, это работа отдела маркетинга.
Workflow Foundation никогда не был инструментом...
Зачем НАМ это всё объяснять? Пишите прямо в спортлото Микрософту! Пусть ОНИ в своём маркетоидом хламе разберутся и БОЛЬШИМИ КРАСНЫМИ БУКВАМИ напишут ваши слова, достойные гранита: «Workflow Foundation никогда не был инструментом для аналитиков, даже дизайнера wf вне VS никогда не было. А уж удобного для людей, а не программистов, и подавно.» Как только я это прочитаю на сайте микрософта, смело одену майку «микрософт рулез!».
workflow хорошо работает когда...
… и это тоже отошлите в микрософт — чтобы при покупке, клиенты не делали унылое лицо «почему у нас плохо работает» — оказывается, WF работает только «КОГДА»! Если ваше «когда» не совпадает с «когда» микрософта, увы — вам этот продукт не подходит. Хорошо бы микрософт описала ВСЕ «КОГДА», когда их продукт не справляется с задачами, которые КАЗАЛОСЬ БЫ должны были решаться именно инструментом, гордо называемым «workflow»!
Тратить кучу времени, чтобы только показать, что 90 файлов проекта в «гиперархитектуре» MVVM — это overdesign? Нет, спасибо — я оставлю вас при вашем апломбе.
Я говорю, что привязки и шаблоны наиболее удобно использовать с MVVM
Чушь, эти вещи вообще никак не соотносятся. Можно иметь просто «модель», привязанную (мы же про binding?) к форме. Вы понимаете о чём я говорю? Шаблоны (мы про шаблоны WPF: item template, data template — про них ведь?) — аналогично, НИКАК не соотносятся какую архитектуру вы выбрали.
MVVM — просто модель программы, шаблонам всё равно как вы называете низлежащие классы. Просто MV* — современный баззворд, под который модно приплетать все технологии. :) (хотя он полезен, не спорю)
Я допускаю, что вы сделали отличную архитектуру, но я не вижу особых преимуществ от использования MVVM — «чатик» мне не кажется тем «сложным энтерпрайзом», где оправдан такой трёхуровневый подход — можно и в два уровня спокойно уложить архитектуру с ничуть не меньшей гибкостью и расширяемостью — весь вопрос лишь в опыте.
Простота — залог удобства для тех, кто решит развивать проект. Мне не страшны эти VM/M, но они явно усложняют работу с кодом без объективной надобности.
Когда оправдан MVVM? Когда есть жёстко очерченный, ограниченный backend, куда можно сохранять только примитивные классы типа POCO или, например, когда model невозможно обвешать атрибутами, специфичными для persistence технологий (EF, XML, etc). Тогда ПРИХОДИТСЯ генерировать ViewModel, адаптирующую «простые, неуклюжие модели» к rich UI. То есть это не ради какой-то «гипергибкости», а тупо в силу ограничений на модель.
У вас model — тупо «сообщения», никем и ничем не ограниченные, создаваемые вами же, т.е. практически любой формы. На этом фоне играть в MVVM — это стрелять из коллайдера по пивным пробкам. Это моё мнение, я не говорю что у вас «всё плохо» — у вас оно НЕ ОПРАВДАНО.
Жизнь всё-равно расставляет всё на свои места. Не будет хороший спец горбатиться за доширак — достаточно посмотреть чужие зарплаты и уровень знаний, как сразу приходит осознание «чего я стóю». Но как только на собеседовании возникают «финансовые тёрки», лучше сразу бежать.
Вы смешиваете в кучу просто неструктурированный код и нормальный, модульный код, но без MVVM наворотов. в вашем случае вы имеете тривиальную задачу доставки сообщений. Ну, пяток классов я бы там накидал, показал на формах — MVVM там делать нечего.
И куда, кстати, вы собрались привязываться если не установите DataContext view'y?
Туда же, куда и в обычной двухуровневой схеме — к модели. Скажем, класс Message — он спокойно покажется в списке и без отдельного MessageView.
Для ясности вам-бы как-то уяснить: WPF — это НЕ MVVM! На WPF можно писать под любую архитектуру.
Про «привязок и шаблонов» — они здесь каким боком? Binding был ещё в WinForms, а шаблоны — те тоже как бы к MVVM отношения не имеют — всего лишь «фича» WPF.
Ну допустим файл с формой уменьшился (хотя вам-то что? Он всё-равно отформатирован, видно что и где). Но код-то никуда не пропал — вы выделили отдельную сущность и потратили время ещё и на взаимодействие V с VM. И кому стало легче от трёх сущностей вместо двух?
Винт и куплен под данные, зачем чего-то ждать?
Сервис по ремонту — да, но не в моём окружении — ещё хуже испортят.
Смысл в том, что мои частные данные ушли неизвестно кому — и с почтой происходит то же самое — «кто владелец сервера — тот и бог всех данных».
Хотя бы потому, что ВСЕ почтовые конторы — под ногтём АНБ. Какого чёрта мне присылают на публичный емэйл мои приватные данные?? Я даже фамилию светить не хочу, не то, что пароли! И где гарантия, что очередной обиженный админ гугла не сольёт письма хакерам?
А вот вам ещё прикол: у меня накрылся винт — жужжит, но не виден в BIOS. Сдал по гарантии, думал починят — фик два! Забрали и выдали новый. А теперь банальный «мальчик на сервисе» меняет плату и спокойно считывает то, что я бережно копил от чужого глаза, включая регистрации на всех сайтах. Нормал?!
Если уж говорить про металлы, то это самое последнее, что я хотел бы держать в руке — скользкий, холодный, от него даже летом противно.
Есть такой «как бы резиновый» пластик с сильным сопротивлением скольжению — вот из чего должны делаться ХОТЯ БЫ боковые рамки. А если стекло сделать потолще-посильнее, вообще сносу не будет!
Мой ответ может показаться странным, но если вы вообще обсуждаете деньги, вы уже провалили дело (с обеих сторон).
Если наниматель — адекватный, он просто в принципе не будет «экономить»: он знает средний уровень зарплат и тоже работает не за идею — «всем нужны деньги», особенно семейным. Поэтому он предложит нормальную начальную ставку с обязательным повышением после испытательного срока. «Выбивать» из него бóльшие деньги — только позориться перед будущим боссом, потому что ты пока — «никто», а хочешь получать больше тех, кто уже что-то сделал для компании.
Ну а если босс — жадный скопидомка, то и разговор о деньгах будет нудный, неприятный, а потом ещё обернётся всякими «негласными» проблемами — переработки, вздрючки и т.п.
Т.е. на мой взгляд соискатель должен просто придти и выслушать что может предложить компания (а компания — обязательно озвучить конкретные цифры и перспективы) — вот такой незамысловатый «этикет» и никакие «сто правил обсуждения» не нужны.
А сам автор сталкивался хоть раз с «ошибкой в BIOS/HAL»? :) Я боюсь, это какие-то совсем пограничные и не интересные случаи.
А касательно точности, тут всё ещё проще: если вы замеряете отработку «a + b», она пролетает за мгновения мысли. Соотв. измерения такой величины грешат больше, чем сама величина. Поэтому если речь о бенчмарках, там ставят циклы по тысяче/миллионам операций и измеряют уже в секундах. А раз секунды, тут хоть DateTime меряй.
Это решается просто: ведёшь человека на Rндекс и говоришь ему: введи в поисковой строке «что делать если» — он просто офигеет, что можно делать в интернете, «если»! :)
Ребят, то, что вы написали этот пост и осознали свою глупость — уже неплохой шаг наверх! Но принципиальная ошибка у вас не в пробеле или каких-то валидациях, а в том, что вы слишком много решаете за пользователя! Ведёте себя как какие-то боги системы — то не делай, это не пиши, сюда не переходи…
Вам знакомо раздражающее чувство, когда во время вашего вождения жена указывает вам как рулить? :) Вот это именно то, чем вы занимаетесь на формах — умничаете больше, чем того требует ситуация.
Пользователь ИМЕЕТ ПРАВО вводить всё, что вздумается. Пример: надо ввести емэйл, но текст с адресом юзер скопировал из другого текста и в строку попал всякий мусор. Что делает нормальный человек? Спокойно пастит строку и подправляет. Вы же со своей назойливой валидацией тыкаете его как котёнка «тут неправильно!».
Уберите к чертям этот авторитарный режим! Дайте им воодить так, как им хочется и аккуратно, без диких цветов и огромных баннеров, пометьте невалидные поля (рамки вполне достаточно).
С регэкспами у вас такой же перебор — trim'а вполне достаточно.
А если бы юзеру писалась внятная ошибка «Пользователя "vasya " не существует» (моноширинный шрифт и кавычки!), то и пробел вы бы тоже сразу отловили. Вы разве не говорите юзеру, что его логин неправильный??
Поменьше понтов и трёпа, юноша! Во-первых, статья явно изобилует техническими фактами, чтобы говорить, что «автор не знаком» — знаком и ещё как!
Во-вторых, «заблуждения» — только в вашем видении 2014-го года и ТОЛЬКО применимо к новейшим продуктам. Касательно даже WF 4.0 это не заблуждения, а ФАКТЫ. Извольте не бросаться словами, не имея на то причин и не перевирать оригинальный смысл статьи. В ней конкретно сказано, с какими продуктами работал автор и конкретные проблемы. Хотите покритиковать? Цитируйте, приводите контраргументы применительно именно к этим версиям. А рассуждать «микрософт что-то там написала ещё лучше, ещё шелковистее» — не надо, это работа отдела маркетинга.
Зачем НАМ это всё объяснять? Пишите прямо в
спортлотоМикрософту! Пусть ОНИ в своём маркетоидом хламе разберутся и БОЛЬШИМИ КРАСНЫМИ БУКВАМИ напишут ваши слова, достойные гранита: «Workflow Foundation никогда не был инструментом для аналитиков, даже дизайнера wf вне VS никогда не было. А уж удобного для людей, а не программистов, и подавно.» Как только я это прочитаю на сайте микрософта, смело одену майку «микрософт рулез!».… и это тоже отошлите в микрософт — чтобы при покупке, клиенты не делали унылое лицо «почему у нас плохо работает» — оказывается, WF работает только «КОГДА»! Если ваше «когда» не совпадает с «когда» микрософта, увы — вам этот продукт не подходит. Хорошо бы микрософт описала ВСЕ «КОГДА», когда их продукт не справляется с задачами, которые КАЗАЛОСЬ БЫ должны были решаться именно инструментом, гордо называемым «workflow»!
Чушь, эти вещи вообще никак не соотносятся. Можно иметь просто «модель», привязанную (мы же про binding?) к форме. Вы понимаете о чём я говорю? Шаблоны (мы про шаблоны WPF: item template, data template — про них ведь?) — аналогично, НИКАК не соотносятся какую архитектуру вы выбрали.
MVVM — просто модель программы, шаблонам всё равно как вы называете низлежащие классы. Просто MV* — современный баззворд, под который модно приплетать все технологии. :) (хотя он полезен, не спорю)
Я допускаю, что вы сделали отличную архитектуру, но я не вижу особых преимуществ от использования MVVM — «чатик» мне не кажется тем «сложным энтерпрайзом», где оправдан такой трёхуровневый подход — можно и в два уровня спокойно уложить архитектуру с ничуть не меньшей гибкостью и расширяемостью — весь вопрос лишь в опыте.
Простота — залог удобства для тех, кто решит развивать проект. Мне не страшны эти VM/M, но они явно усложняют работу с кодом без объективной надобности.
Когда оправдан MVVM? Когда есть жёстко очерченный, ограниченный backend, куда можно сохранять только примитивные классы типа POCO или, например, когда model невозможно обвешать атрибутами, специфичными для persistence технологий (EF, XML, etc). Тогда ПРИХОДИТСЯ генерировать ViewModel, адаптирующую «простые, неуклюжие модели» к rich UI. То есть это не ради какой-то «гипергибкости», а тупо в силу ограничений на модель.
У вас model — тупо «сообщения», никем и ничем не ограниченные, создаваемые вами же, т.е. практически любой формы. На этом фоне играть в MVVM — это стрелять из коллайдера по пивным пробкам. Это моё мнение, я не говорю что у вас «всё плохо» — у вас оно НЕ ОПРАВДАНО.
Туда же, куда и в обычной двухуровневой схеме — к модели. Скажем, класс Message — он спокойно покажется в списке и без отдельного MessageView.
Для ясности вам-бы как-то уяснить: WPF — это НЕ MVVM! На WPF можно писать под любую архитектуру.
Сервис по ремонту — да, но не в моём окружении — ещё хуже испортят.
Смысл в том, что мои частные данные ушли неизвестно кому — и с почтой происходит то же самое — «кто владелец сервера — тот и бог всех данных».
А вот вам ещё прикол: у меня накрылся винт — жужжит, но не виден в BIOS. Сдал по гарантии, думал починят — фик два! Забрали и выдали новый. А теперь банальный «мальчик на сервисе» меняет плату и спокойно считывает то, что я бережно копил от чужого глаза, включая регистрации на всех сайтах. Нормал?!
Есть такой «как бы резиновый» пластик с сильным сопротивлением скольжению — вот из чего должны делаться ХОТЯ БЫ боковые рамки. А если стекло сделать потолще-посильнее, вообще сносу не будет!
Если наниматель — адекватный, он просто в принципе не будет «экономить»: он знает средний уровень зарплат и тоже работает не за идею — «всем нужны деньги», особенно семейным. Поэтому он предложит нормальную начальную ставку с обязательным повышением после испытательного срока. «Выбивать» из него бóльшие деньги — только позориться перед будущим боссом, потому что ты пока — «никто», а хочешь получать больше тех, кто уже что-то сделал для компании.
Ну а если босс — жадный скопидомка, то и разговор о деньгах будет нудный, неприятный, а потом ещё обернётся всякими «негласными» проблемами — переработки, вздрючки и т.п.
Т.е. на мой взгляд соискатель должен просто придти и выслушать что может предложить компания (а компания — обязательно озвучить конкретные цифры и перспективы) — вот такой незамысловатый «этикет» и никакие «сто правил обсуждения» не нужны.
А касательно точности, тут всё ещё проще: если вы замеряете отработку «a + b», она пролетает за мгновения мысли. Соотв. измерения такой величины грешат больше, чем сама величина. Поэтому если речь о бенчмарках, там ставят циклы по тысяче/миллионам операций и измеряют уже в секундах. А раз секунды, тут хоть DateTime меряй.
Вам знакомо раздражающее чувство, когда во время вашего вождения жена указывает вам как рулить? :) Вот это именно то, чем вы занимаетесь на формах — умничаете больше, чем того требует ситуация.
Пользователь ИМЕЕТ ПРАВО вводить всё, что вздумается. Пример: надо ввести емэйл, но текст с адресом юзер скопировал из другого текста и в строку попал всякий мусор. Что делает нормальный человек? Спокойно пастит строку и подправляет. Вы же со своей назойливой валидацией тыкаете его как котёнка «тут неправильно!».
Уберите к чертям этот авторитарный режим! Дайте им воодить так, как им хочется и аккуратно, без диких цветов и огромных баннеров, пометьте невалидные поля (рамки вполне достаточно).
С регэкспами у вас такой же перебор — trim'а вполне достаточно.
А если бы юзеру писалась внятная ошибка «Пользователя
"vasya "не существует» (моноширинный шрифт и кавычки!), то и пробел вы бы тоже сразу отловили. Вы разве не говорите юзеру, что его логин неправильный??