|
![]() |
#1 |
Гость
|
Цитата:
DAX же как правило используется как конструктор "собери сам". Если Windows выпускали бы как такой же конструктор и конечный продукт формировался для каждого клиента индивидуально, переход на новую версию был бы сопряжен с теми же трудностями. Примеры для AX 3 - 4- 2009: 1) Внедренцы DAX внедрили стандарт. Они будут переходить более менее безболезненно на новые версии, правда пользователей придется переучивать согласно новым тренингам и надеяться, что новые уникальные индексы уживутся со старыми данными. 2) Внедренцы DAX полностью проигнорировали стандартное приложение и запилили рядом свое с домино и медведями. Они на новые версии DAX будут переходить вообще без проблем. |
|
![]() |
#2 |
Участник
|
Цитата:
Сообщение от Кирилл
![]() Потому что Windows - продукт коробочный, сценарии его использования и интерфейсы с другими программными продуктами заранее известны его разработчикам (а точнее ими же и диктуются).
DAX же как правило используется как конструктор "собери сам". Если Windows выпускали бы как такой же конструктор и конечный продукт формировался для каждого клиента индивидуально, переход на новую версию был бы сопряжен с теми же трудностями. Вопрос в том, можно ли сделать прикладной код Ax больше похожим на конструктор ![]() |
|
![]() |
#3 |
Участник
|
Цитата:
Лично для меня на 1 месте UnitTest, на 2-м рефакторинг со всеми БП... Без модульных тестов рефакторинг если и возможен, то нет уверенности в том, что вы ничего не сломаете. И все, никакого пластилина. Пользовательский тест обычно всегда после этого срабатывает.
__________________
// no comments |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
![]() |
#4 |
Участник
|
Цитата:
Цитата:
Лично для меня на 1 месте UnitTest, на 2-м рефакторинг со всеми БП... Без модульных тестов рефакторинг если и возможен, то нет уверенности в том, что вы ничего не сломаете.
Те юниты которые есть часто не соответствуют понятиям предметной области или реализуют их неустойчивыми интерфейсами. Например нет такой сущности как "Журнал ГК" - его логика реализована в форме, таблицах, LedgerJournalEngine и прочем. Причем то, что реализовано в форме не имеет нормального программного интерфейса. Цитата:
И все, никакого пластилина. Пользовательский тест обычно всегда после этого срабатывает.
|
|
|
За это сообщение автора поблагодарили: mazzy (2). |
![]() |
#5 |
Гость
|
Цитата:
Перенести всю логику из таблиц и форм, в классы, оставив там только вызовы соответствующих методов этих классов. |
|
![]() |
#6 |
Участник
|
Цитата:
Цитата:
Перенести всю логику из таблиц и форм, в классы, оставив там только вызовы соответствующих методов этих классов.
|
|
![]() |
#7 |
Гость
|
Цитата:
Создаем для таблицы базовый прокси-класс, от него потом будем наследовать и создавать нужный экземпляр в зависимости от данных в строке. Соответственно в таблице появляется метод, возвращающий этот экземпляр. Кстати, сам конструктор в базовом классе можно и не трогать, а перебирать всех наследников, скармливать им строку и они сами ответят, будут они ей заниматься или нет. Первый откликнувшийся наследник и будет возвращен. Потом все статические методы просто переносим в базовый класс. Им все равно, лишь бы на сервере исполниться. Затем смотрим какие методы мы можем перекрывать у таблицы. Их там штук 25, но нам хватит важнейших: insert, update, delete, renamePrimaryKey, initValue, validateField, modifiedField, validateWrite Перекрываем их. Внутри создаем экземпляр прокси-класса и к примеру для update() до и после super прописываем экземпляр.beforeUpdate(this) и afterUpdate(this). Обрамляем все это дело транзакцией. Ну и обычные напиленные методы копируем из таблицы в класс, но уже с учетом, что это другой this. До кучи можно еще озадачиться написанием методов set и get (ну или parm), которые будут транслировать переменные прокси-класса в поля таблицы. А потом использовать только их для чтения или записи. Правда в таблице останутся определения индексов, связей и deleteactions. Но по крайней мере код наследовать уже можно. Ну и далее стараемся работать с этим прокси-классом, а не с таблицей непосредственно. Зато залез человек в обозреватель, что-то там поделал, а логика вызвалась уже определенная наследниками прокси-класса. Делаем эти прокси-классы для шапки и для строк, делаем класс Журнал ГК, который будет использовать экземпляры этих прокси-классов. Вот как бы и свели код в одно место с возможностью полиморфизма вашего любимого. С кодом на формах поступаем похожим образом. Последний раз редактировалось Кирилл; 23.09.2014 в 17:25. |
|
![]() |
#8 |
Гость
|
Цитата:
В примере Visual Studio Shell - это продукт, потребителем которого является программист, который всю логику потом и запиливает, но потом не может продать конечный продукт никому кроме себя. Это аналог использования DAX исключительно как средства разработки, в DAX тоже есть прекрасные детальки Tables, Forms, Maps и т.д. |
|
|
За это сообщение автора поблагодарили: DSPIC (1). |
![]() |
#9 |
Участник
|
Цитата:
Цитата:
Это аналог использования DAX исключительно как средства разработки, в DAX тоже есть прекрасные детальки Tables, Forms, Maps и т.д.
|
|
![]() |
#10 |
Гость
|
Цитата:
Все есть яд и и все есть лекарство, вопрос в дозах и условиях применения. Разные потребители. Прекрасными детальками пользуется программист. Он мыслит категориями "могу". Деталька предоставляет такие-то сервисы и накладывает такие-то ограничения и область применения. В итоге программист использует детальку только так, как это задумал ее автор, либо не использует. Потребителем прикладного решения является заказчик. Он мыслит категориями "хочу" и может захотеть что-либо, находящееся вне области применения, заданной нашей прекрасной системой без пластилина. И тут перед программистом встает дилемма. Либо отказаться от денег, либо от принципов ![]() Учетные системы их разработчиками задуманы как способ рубки бабла, а не абстрактная "вещь в себе", так что от денег отказываться никто не будет. Последний раз редактировалось Кирилл; 23.09.2014 в 14:52. |
|
![]() |
#11 |
Участник
|
Цитата:
Сообщение от Кирилл
![]() Разные потребители.
Прекрасными детальками пользуется программист. Он мыслит категориями "могу". Деталька предоставляет такие-то сервисы и накладывает такие-то ограничения и область применения. В итоге программист использует детальку только так, как это задумал ее автор, либо не использует. Цитата:
Потребителем прикладного решения является заказчик. Он мыслит категориями "хочу" и может захотеть что-либо, находящееся вне области применения, заданной нашей прекрасной системой без пластилина.
И тут перед программистом встает дилемма. Либо отказаться от денег, либо от принципов ![]() Дилемма всегда будет но при разных инструментах и подходах она встает реже или чаще. Я думаю, что можно серьезно уменьшить количество гнутых деталек, если поменять инструменты. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
![]() |
#12 |
Гость
|
Цитата:
Если вся система наследует свойства составляющих ее частей, то она для бизнесмена оказывается большой деталькой, ограничивающей его "хочу" сильнее, чем это делает пластилин. Вот я к примеру бизнесмен. DAX внедрили, все работает как я и просил, проблем нет. Убедите меня перейти на новую версию и оплачивать поддержку всю дорогу. |
|
![]() |
#13 |
Гость
|
|
|
Теги |
.net, aot, cil, layer, morphx, x++, компилятор, слои |
|
![]() |
||||
Тема | Ответов | |||
Прощай, CITP-AT / Software-Vertriebsfirma Columbus IT Partner programmiert Pleite | 3 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|