17.06.2017, 10:33 | #61 |
Участник
|
Цитата:
Можете сформулировать критерий сложности? Потому что из ваших постов я понял его так: "Все что я не понимаю за 2 минуты - overengeneering". Людям пожилого возраста тяжело пользоваться мобильным телефоном, но это же не значит что мобильный телефон - overengeneering ? Последний раз редактировалось skuull; 17.06.2017 в 10:36. |
|
|
За это сообщение автора поблагодарили: Vadik (1). |
17.06.2017, 16:09 | #62 |
Banned
|
Цитата:
Сверхсложность и перебор это не про то что дикарю сложно понять как работает велосипед, а когда усложнение велосипеда происходит только из желания механиков его улучшить. Чем больше передач - тем круче, чем меньше болтов - тем лучше. В то время как самому велосипедисту надо дешевле, проще, надёжнее. То есть эта верёвка она должна использоваться только и ради реальных целей вне программизма. Если программист замкнут на поиграть с веревкой то он на ней повесится. ООП и банда четырёх сыграли дурную службу являясь той самой длинной веревкой. Критерии сложности такие же как и в механической инженерии. Принцип KISS. Простота как условие популярности и выживания. Привлекательность для реального мира ещё конечно. Но в нем всегда привлекательно то что просто и элегантно. |
|
|
За это сообщение автора поблагодарили: Logger (3). |
17.06.2017, 18:09 | #63 |
Участник
|
Понесло-понесло...
Желающим поговорить об Оver-engineering вообще, предлагаю переместиться в курилку Оver-engineering - "зачем так сложно?" - Мортира Карл Здесь обсуждение в разделе DAX:Программирование Здесь давайте останемся к контексте аксапты. Есть еще что сказать про Оver-engineering в Аксапте? |
|
17.06.2017, 18:21 | #64 |
Banned
|
Справедливо.
К примеру. Зачем был сделан рефакторинг FormLetter* фрэймворка ? Почему - это но понятно, но ЗАЧЕМ?? Что именно стало легче, быстрее, проще? В чем польза для быстродействия, надежности, функциональности и прочего от того что шестеренки стали мельче? https://technet.microsoft.com/en-us/.../hh272871.aspx Последний раз редактировалось ax_mct; 17.06.2017 в 18:24. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
17.06.2017, 19:02 | #65 |
Участник
|
Есть внутренний документик в МС в котором написано: зачем, что плохо в старом, как новое хорошо и т.д. и т.п. В основном производительность и дублирование кода. За подробностями надо спрашивать людей имеющих к нему непосредственный доступ.
Последний раз редактировалось skuull; 17.06.2017 в 19:04. |
|
|
За это сообщение автора поблагодарили: mazzy (5). |
17.06.2017, 19:05 | #66 |
Участник
|
Цитата:
я попробую узнать можно ли выложить этот документик? |
|
18.06.2017, 02:01 | #67 |
Banned
|
Есть White Paper
Using the refactored formletter framework Date: May 2011 Author: Kenneth Puggaard, Senior Development Lead http://go.microsoft.com/fwlink/?LinkID=218315 Обоснование Because the FormLetter classes had so much functionality and no well-defined APIs in Microsoft Dynamics AX 2009, they were complex for developers to understand and customize. In Microsoft Dynamics AX 2012, the formletter framework has been refactored to clearly separate the functionality needed for the posting process into different classes. This has led to a number of new class hierarchies. The Microsoft Dynamics AX 2009 base FormLetter class has been split into eight base classes. It also has been changed to run under the SysOperation framework. Switching to the SysOperation framework has the advantage of executing the code on the server tier during posting in IL (intermediate language). Because of the switch to using the SysOperation framework, client callbacks from code running on the server tier are no longer supported. Client callbacks result in an exception. Вот сколько старый FormLetter существовал лет? Лет 10 все значит мучились. Отчасти это редизайн из-за смены Runbase/RunBaseBatch на SysOperation framework. https://msdn.microsoft.com/en-us/library/gg862488.aspx SysOperation framework реализует MVC pattern. The isolation of the parameters (model), the dialog (view) and the code that runs (controller) is the essence of the pattern. Model: • Member variables • Pack/unpack (aka serialization) View: • Dialog() • GetFromDialog() • PutToDialog() Controller: • Prompt() • Run() Ничего не имею против MVC вообще, но ЗАЧЕМ менять один код на такой же другой, я понять не могу. Код - такой же. Его просто разбили на пазл паттерном. Интерпретатору/компилятору - все равно, он все равно соберет все лоскутки в "простыню". Пользователю - все равно. Функциональности - все равно. Программисту? Старым, после многих лет работы с этими классами - сплошная радость. Новым, быть они хоть трижды Java программистами - легче и проще это не делает. А типичные на клиенте - вообще не в состоянии понять. Зато да, вот оно современное программирование какое |
|
|
За это сообщение автора поблагодарили: mazzy (5), macklakov (5), Logger (1). |
18.06.2017, 07:02 | #68 |
Moderator
|
Хочется номинировать на пример over-engineering новую главную книгу и любимые мной subledger/distributions.
Во первых - из за того что там очень высокий уровень абстракции, большая часть диагностики сводиться к сообщению "У нас тут какая-то фигня". После этого приходится тратить где-нить от часа до трех времени, чтобы протрассироваться и понять - где-же именно и какую настройку консультанты неправильно сделали. Просто благодаря могучим программистским механизмам, место возникновения ошибки отделено от его причины изрядным количеством вложеных вызовов,классов-фабрик, классов сохранения состояния, классов перехода состоянияи и тд и тп. Поэтому в момент обнаружения ошибки, выдать понятную диагностику просто невозможно. Проверку параметров в унаследованный от Дамгаарда код прогрессоры добавить не догадались. Аналогично - процентов 85 эскалированных в Микрософт ошибок, приходилось на те самые замечательные распределения и сабледжер. При этом чтобы воспроизвести ошибки в стандарте и понять условия их возникновения, приходится тратить достаточно заметное время на трассированние исходного кода. При этом, как я много раз уже писал, subledgers/distributions - это вообще абсурд, не связанный с экономической реальностью. Новая аналитика и ГК - конечно полезна в определенном числе случаев, но с другой стороны - в 98% случаев и старой ГК (как в 2009) хватало. (В том числе для вполне себе крупных внедрений enterprise уровня). Наконец - хочу ввести критерий ovengineering: Это, как несложно было догадаться, отрицательный экономический эффект от изучения новой технологии. Вот я на эту борьбу с ГК и распределениями потратил, в общей сложности, порядка 4 недель жизни. Во первых - далеко не все это время было billable. Клиенты как-то не очень рвутся оплачивать то, что с их точки зрения является ошибкой (не важно - нашей в настройках, или Микрософтовской - в коде). Во вторых - эти знания мне вряд ли пригодятся для каких-то других задач, кроме собственно воспроизведения ошибок MS и поиска ошибок консов. (А это, как я уже заметил, не очень выгодные в финансовом плане и не очень интересные в профессиональном плане задачи). Я точно не буду создавать свой собственный вид source document и вряд ли я буду переписывать разноску в ГК. Так что для меня изучение нового замечательного, богатого на новые программистские технологии модуля дало в целом негативный экономический эффект. Я потратил изрядное время на получение знаний сомнительной полезности и применимости. То есть - конечно если за стажерскую зарплату сидеть и тихонечко разбираться в новых технологиях, то можно не думать об окупаемости этого процесса. Но вот если ты фрилансер, или если ты ключевой сотрудник партнера (и твоя зарплата подпирает сумму выручки), то критерии эффективности очень даже актуальными становятся. |
|
|
За это сообщение автора поблагодарили: Raven Melancholic (2), mazzy (2), ax_mct (3), ta_and (3), mau (1), san2san (1). |
18.06.2017, 07:51 | #69 |
Участник
|
Цитата:
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. |
|
18.06.2017, 08:05 | #70 |
Модератор
|
Ну а я тогда свою копеечку добавлю с бюджетированием. Там правда скорее не over-engineering, а просто уродский дизайн. Куча логики на вызывающих друг друга хранимых процедурах на T-SQL. Часть параметров с которыми эти SP вызываются (BudgetCheckGroup) - живут в рамках сессии и даже перехватив "падающий" вызов - оттрассировать его нельзя (это свежесозданные RecId которые при ошибке откатятся с транзакцией). Зашитый в код applock, из-за которого все проверки выполняются строго последовательно. Решил ты в одной компании проверить по бюджету журнал строк так на 10000 - все приложение встало колом. Ну не прелесть ли?
__________________
-ТСЯ или -ТЬСЯ ? Последний раз редактировалось Vadik; 18.06.2017 в 22:53. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
18.06.2017, 08:09 | #71 |
Участник
|
Цитата:
Сообщение от ax_mct
Есть White Paper
Using the refactored formletter framework Date: May 2011 Author: Kenneth Puggaard, Senior Development Lead http://go.microsoft.com/fwlink/?LinkID=218315 |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
18.06.2017, 08:12 | #72 |
Участник
|
Цитата:
Изучая DAX2012 решил последовать своему же совету. Сказать, что был удивлен это упростить мою реакцию - жена много новых слов узнала. |
|
18.06.2017, 11:37 | #73 |
Участник
|
Цитата:
Сообщение от skuull
Это не тот о котором я говорил, перед тем как сделать фичу ее надо продать даже внутри МС. Вот кто-то и написал документ как плох текущий фреймворк и как хорошо он его переделает за n часов. Найти его можно было на внутреннем шарепоинте по словам formletter и refactoring/redisign.
да, к сожалению, документ явно указан как конфиденциальный. насколько я понимаю, публичный документ сделан на базе этого. просто вырезаны главы "плюсы-минусы", "goals", "non-goals" и прочая лирика. Цитата:
в том числе потому, что class responsibility была размазана по классам и каждый класс отвечал за несколько задач. типа попытались реализовать концепцию "одно семейство - одна задача". спасибо. надо подумать. |
|
|
За это сообщение автора поблагодарили: skuull (4). |
18.06.2017, 14:53 | #74 |
Участник
|
Цитата:
Сообщение от Raven Melancholic
Я раньше, когда новички обращались с просьбой подсказать где лучше посмотреть реализацию разноски в ГК данных, введенных пользователями, отсылал к текстовой накладной (накладной с произвольным текстом). Типа там все просто и понятно.
Изучая DAX2012 решил последовать своему же совету. Сказать, что был удивлен это упростить мою реакцию - жена много новых слов узнала. И у меня вопрос ЗАЧЕМ? Я пойму если объяснения будут адекватные. Типа стало быстрее, проще, ну или на худой конец все движется вперед - стоять на месте нельзя. Но только двигаться вперед можно и с учетом того , что было раньше сделано, а не по принципу "врач сказал резать, значит резать"
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
18.06.2017, 14:55 | #75 |
Участник
|
Цитата:
Чем мельче и специализированней метод/класс, тем легче его тестировать. Хотя с пониманием как тестировать и как писать код который можно тестировать в АХ тусовке не сложилось |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
18.06.2017, 15:06 | #76 |
Участник
|
Цитата:
но на практике получаются бесконечные *Adapter, *Handler, *Helper, *Util и прочие расширители. тот же *Print здорово сбивает с толку, если в результате расширения функционал "печати" стал еще и отсылать куда-то email, обращаться к внешним EDI сервисам, или записывать что-то в базу данных... а если эти модифицированные потомки для работы еще и каких-то private-данных требуют, то начинается протяжка параметров через всю иерархию... Мне кажется, что проблема все-таки в отсутствии механизма, который позволяет рефакторить существующий код. а различия в критериях-подходах дают убийственную смесь. Последний раз редактировалось mazzy; 18.06.2017 в 15:48. |
|
18.06.2017, 16:27 | #77 |
Moderator
|
Цитата:
наступит ясность почему именно "не сложилось". Вообще - автоматизированное тестирование окупает себя только на тиражируемом софте. Вот если у тебя есть эдак клиентов 40-50, вот тогда написание скриптов автоматического тестирования вполне оправдано и экономически выгодно. Только вот я пока не видел вертикальных решений аксаптовских с таким количеством клиентов (гм - может быть у add-ons типа Bartender или Formpipe Lasertnet есть такое количество клиентов). По крайней мере на обычных внедренческих проектах, с разработкой под конкретного клиента, разработка тест-скриптов не окупается. |
|
|
За это сообщение автора поблагодарили: Vadik (1), Ace of Database (3), trud (2), macklakov (5). |
18.06.2017, 17:15 | #78 |
Модератор
|
Цитата:
Цитата:
А ты попробуй продать реальному клиенту идею авоматизированного тестирования
__________________
-ТСЯ или -ТЬСЯ ? |
|
18.06.2017, 18:10 | #79 |
Banned
|
Цитата:
количество багов и последующих hotfixes стало меньше? Так сказать экономический эффект интересен. Мне почему-то не кажется что в AX2012 или Operations стало меньше hotfixes по сравнению с к примеру 3.0. По моему как пользователи работали beta-тестерами так и работают. Поправьте меня, так как не могу сейчас с цифрами в руках. У меня только субьективное впечатление от то здесь то там прочитанных KB и CU. |
|
18.06.2017, 21:02 | #80 |
Модератор
|
Цитата:
Цитата:
Так сказать экономический эффект интересен
Я это все не к тому сейчас пишу, чтобы все всегда реализовывать максимально трудоемкими "программисткими" способами. Но в некоторых случаях эти усложнения оправданы
__________________
-ТСЯ или -ТЬСЯ ? |
|
|
За это сообщение автора поблагодарили: ax_mct (3). |
Теги |
sysoperation framework |
|
|