|
20.06.2017, 15:42 | #1 |
Участник
|
Цитата:
Может разница в восприятии сложности диктуется namespace'ами? У кого есть 2012, могут попробовать набрать что-нибудь например из nameSpace System. См. скриншоты. В неймспейсах каждый список относительно небольшой. И особой разницы между методами или классами нет. получается, что в неймспейсах класс - это что-то вроде группы свойств и методов, которые предназначены делать какую-то одну задачу. в традиционной аксапте нет возможности группировать методы, а список классов бесконечный... |
|
|
За это сообщение автора поблагодарили: macklakov (2). |
20.06.2017, 17:28 | #2 |
Banned
|
Это попытка нахождения ответа на вопрос "почему".
Почему программист со стороны приносит свое - это понятно. А вот "зачем" ему это позволяют и есть вопрос. Сложно/просто - это второй вопрос. Первый - зачем вообще трогать то что работает? Не с точки зрения "программиста", а с точки зрения здорового человека. Не могут же кротам давать карт-бланш, это безумие так делать. Цитата:
Сообщение от macklakov
Вот это образчик чистейшего программизма. Т.е. если бы хотели с помощью Office Add-In и своего монопольного права на систему уничтожить зависимых конкурентов, это понятно. Но в данном случае партнеру урон был нанесен непреднамеренно. Просто их в универе учили что база должна быть нормализована, вот они и нормализовали. Консультанты-перебежчики из GP сказали что их клиент захочет увидеть аналитики через черточку, вот и получили.
|
|
20.06.2017, 17:40 | #3 |
Участник
|
Вы просто не представляете с каким облегчением люди в МС не трогают, если есть такая возможность.
Изменяют для расширения функционала. Причем очень много функционала не видно в россии. Очень много функционала для других стран. почему кротам? а кому, как не разработчикам давать карт-бланш на изменение кода? кто еще то? |
|
20.06.2017, 19:40 | #4 |
Banned
|
Цитата:
Сообщение от mazzy
Вы просто не представляете с каким облегчением люди в МС не трогают, если есть такая возможность.
Изменяют для расширения функционала. Причем очень много функционала не видно в россии. Очень много функционала для других стран. почему кротам? а кому, как не разработчикам давать карт-бланш на изменение кода? кто еще то? Левой рукой "системные классы" меняются не ради функционала, а ради неких "общепринятых принципов", делая код более абстрактным чтобы он был более абстрактным. В то же время правой рукой добавляется фунционал вертикальных решений с таким качеством кода или дизайном что зубы сводит. Это не только ритэйл, но и TAM, PDC в R3. То есть "улучшение кода" и "добавление функциональности" - это два разных параллельных процесса. Улучшение не приносит функциональности, а новая функциональность приносит плохой код. Разработчикам нельзя разрешать менять код без наличия на то конкретных бизнес-целей. Рефакторинг в отношении зрелого и популярного приложения - это безумие. Тут ведь вопрос в том, нас покрыло облаками и прочим нас не радующим. А есть ли здесь умысел бизнеса или это результат неуемного технарского зуда? Мне все больше кажется что это революционное бешенство низов. Потому как с точки зрения бизнесмышления это все не обьяснить. А фанатизмом толпы - объяснимо. |
|
20.06.2017, 21:02 | #5 |
Участник
|
злостный оффтоппс :)
Цитата:
Да и все "модные технологии" еще и ресурсоемки обычно, что подталкивает тележку гонки вооружений "современным железом" и ослик дальше бежит "за морковкой" по кругу "надувая" акции IT индустрии ps: коллеги, делаем ставки на "увидим ли мы "сценарии работы от MS" или и так всем все понятно? |
|
20.06.2017, 21:13 | #6 |
Участник
|
Цитата:
на LCS есть бизнес-процессы. они же сценарии. |
|
21.06.2017, 00:08 | #7 |
Banned
|
Цитата:
Вместо этого сейчас носятся с телеметрией из облаков как способом связи с реальным миром. Клуб анонимных оверлейщиков "Программистский подход" но на уровне корпорации. P.S. Хотя может я чего не знаю и связь с реальным бизнесом таки есть. C другой стороны если бы была эта обратная связь то не радовался бы настолько Dave Froslie возможностям телеметрии. |
|
21.06.2017, 03:42 | #8 |
NavAx
|
Цитата:
Связь с бизнесом у них, судя по всему, таки есть. И стратегия есть не самая худшая. Просто из-за неопытности они не знают на какую информацию можно полагаться, а на какую нет. У них же произошло слияние нескольких продуктов. И на американском рынке доминировала отнюдь не AX, а GP. Получается что партия людей с опытом в более отсталых системах довольно влиятельна. И они пытаются переделывать как им привычнее. Я сам лично слышал нытье на тему:"ну почему в AX не получается делать как GP?" Да и потом, бытует мнение что NAV таки более приятная система чем AX и с их точки зрения доминирование AX это варварство. И как между ними рассудить? Но, судя по ряду признаков и решениям находящимся в разработке, вместо того чтобы разбираться какая систем лучше, а какая хуже, делается попытка брость всю эту охапку чемоданов с оторванными ручками. Вместо этого делается альтернативная, изначально облачная платформа для модулей, стыкующихся друг с другом. Именно эко-система, а не продукт. Если получится, будет интересно. Рынок сильно поменяется. Но есть надежда что при этом он еще и сильно разрастется, а значит и для нас место найдется Но вот у AX в этой схеме нет будущего. Поэтому над ней дозволяется издеваться как кому в голову взбредет. CRM это любимое и понятное, родное. CRM очень хорошо в новую модель ложится. А AX это что-то странное, непонятное, что-то такое где партнеры могут диктовать условия. А партнеры зачастую заинтересованы в том, чтобы в продукте было побольше заморочек, тогда у них есть монополия на экспертизу. Поэтому AX раздражает. Ее не жалко. Пусть ребята играются в арихтекторов, руку набивают.
__________________
Isn't it nice when things just work? Последний раз редактировалось macklakov; 21.06.2017 в 03:44. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
21.06.2017, 08:22 | #9 |
Участник
|
Цитата:
Чтобы иметь это в таком количестве надо делать крупные кусочки из мелких. Причем кусочки люого уровня должны иметь "снаружи" и "внутри" и снаружи быть проще чем внутри. PHP код:
X++: [Math]::Log(78843, 8) Но существующие объекты тоже достаточно жирные. Если посчитать строчки кода, то: X++: PS E:\RainMain\Source\AppIL\Metadata\ApplicationSuite> ls -Recurse -Include *.xml | %{ (gc $_.FullName).Length }| measure -sum | % sum 24284376 PS E:\RainMain\Source\AppIL\Metadata\ApplicationSuite> [Math]::Log(24284376, 8) 8.17784169341017 Цитата:
получается, что в неймспейсах класс - это что-то вроде группы свойств и методов, которые предназначены делать какую-то одну задачу.
Цитата:
в традиционной аксапте нет возможности группировать методы, а список классов бесконечный...
То есть у нас есть объекты приложения, модели, модули, причем отличить внутренне от внешнего можно только на уровне объектов приложения (да и то не всех). У модулей есть ключевое слово internal, но оно не работало для нас, например год назад полностью - не поддерживалось в VS и не было InternalsVisibleTo (что надо для юниттестов). Под классами есть методы, функции (которые не рекомендуется использовать). То есть нужно ~9 уровней а есть пять, причем, последние два воявились в 2012 и 7 и внутренности нельзя спрятать выше уровня класса. На уровне модуля хотя бы контроллируются зависимости и их нецикличность. Но мне кажется разница в восприятии в большей степени из-за разницы условий в которых работаем и бекграунда. |
|
21.06.2017, 08:46 | #10 |
Участник
|
Цитата:
Сообщение от belugin
Кошелек Миллера - чтобы чем-то комфортно оперировать надо иметь это в количестве 7+-2.
Цитата:
макс, ты сейчас продемонстрировал блестящий программистских подход. равномерно(!) разбивать на кусочки по 8(!) все(!) объекты аксапты никто не просил. убежден, что из всех читателей только у тебя такая мысль возникла )))) как только появляется слово "все" - жди логической ошибки. жжошь! Цитата:
Сообщение от belugin
Это называется Single Responsibility Principle
SOLID - не священная книга. Эти принципы имеют свои области применения и имеют случаи, когда их не рекомендуется применять. Кроме того есть паттерн Фасад https://en.wikipedia.org/wiki/Facade_pattern и много других. собственно вопрос этой темы: почему один принцип, не слишком свойственный старой аксапте, упорно применяется в последних версиях. Цитата:
и вообще много чего было придумано. Цитата:
Потому что позиционировалась как "единая система", "единая база", "целостные и всегда актуальные данные". Кому нужно, Макс? Кому? И зачем? Какие свойства возникнут в системе после того, как эти уровни появятся, а какие свойства пропадут? Наверное... |
|
21.06.2017, 09:03 | #11 |
Участник
|
Цитата:
Цитата:
жжошь!
У тебя есть какая-то другая метрика для оценки коричества информации в коде? Цитата:
спасибо )
SOLID - не священная книга. Эти принципы имеют свои области применения и имеют случаи, когда их не рекомендуется применять. Цитата:
и суффиксы. и соглашения по наименованию объектов.
и вообще много чего было придумано. Цитата:
Потому что позиционировалась как "единая система", "единая база", "целостные и всегда актуальные данные".
Цитата:
Кому нужно, Макс?
Кому? И зачем? Какие свойства возникнут в системе после того, как эти уровни появятся, а какие свойства пропадут? |
|
21.06.2017, 09:24 | #12 |
Участник
|
Цитата:
Цитата:
а зачем такая метрика? Цитата:
знаю-знаю. но специально стараюсь не использовать терминологию в ВОПРОСАХ. выбор терминологии отвечающим позволяет многое узнать о его ходе мысли. вот я спросил про "ездач", а ты ответил одним из принципов в SOLID. а почему именно SOLID? почему не другие шаблоны и паттерны? почему спрашиваю? а потому что основным инструментом SOLID является рефакторинг кода. SOLID - это шаблон agile разработки. но: 1. майерософт выпущенный в релизе Аксапты код не рефакторит по соображениям совместимости. ))) 2. с точки зрения не-МС-программистов, набор классов в Аксапте является библиотекой. agile не очень подходит для разработки библиотек ))) ================== и вообще, если человек задает вопросы - это не значит что он не знает ответа. это значит, что он хочет узнать мнение другого человека. ) Цитата:
и в самом деле, причем тут это? |
|
21.06.2017, 10:31 | #13 |
Участник
|
Чтобы оценить потребное количество уровеней кусочков по 8 - см рассуждения выше.
Цитата:
а... ты об этом.
знаю-знаю. но специально стараюсь не использовать терминологию в ВОПРОСАХ. выбор терминологии отвечающим позволяет многое узнать о его ходе мысли. вот я спросил про "ездач", а ты ответил одним из принципов в SOLID. а почему именно SOLID? почему не другие шаблоны и паттерны? Цитата:
почему спрашиваю? а потому что основным инструментом SOLID является рефакторинг кода. SOLID - это шаблон agile разработки.
Цитата:
но:
1. майерософт выпущенный в релизе Аксапты код не рефакторит по соображениям совместимости. ))) Цитата:
2. с точки зрения не-МС-программистов, набор классов в Аксапте является библиотекой. agile не очень подходит для разработки библиотек )))
Цитата:
т.е. отсутствие инструментария...
и в самом деле, причем тут это? |
|
21.06.2017, 11:05 | #14 |
Участник
|
Цитата:
Цитата:
именно поэтому я сознательно не употреблял термин в вопросе. нет, конечно. во-первых, это только ООП. во-вторых, это часть agile. И еще вопрос - насколько agile применим в данном случае. "...которые означали пять основных принципов объектно-ориентированного программирования" "...Это часть общей стратегии гибкой и адаптивной разработки" https://ru.wikipedia.org/wiki/SOLID_...BD%D0%B8%D0%B5) english: "for five basic principles of object-oriented programming and design" "It is part of an overall strategy of agile and Adaptive Software Development" https://en.wikipedia.org/wiki/SOLID_...riented_design) Цитата:
так что же в аксапте можно рефакторить? в этой ветке обсуждалось семейство FormLetter - его можно? в этой ветке обсуждался runBase - его можно? Цитата:
но мне кажется, что я и так забил эфир в последнее время своими выступлениями. мне кажется, что читающим гораздо интереснее было бы узнать твое мнение, как разработчика МС. поэтому, давай сделаем вид, что маззи (Я действительно сожалею, что использовал термин в вопросе вместо того, чтобы задать вопрос про закрытый код на простом естественном языке) давай лучше поговорим о твоем мнении. итак, ты считаешь, что agile подходит и для библиотек. именно поэтому МС одновременно и закрывает код аксапты, и пропагандирует гибкую разработку. можешь чуть подробнее рассказать, как применять методики гибкого программирования тем, у кого нет доступа к коду? есть ли особенности? возвращаясь к теме, какие приемы на твой взгляд могут снизить сложность гибкой разработки в условиях закрытого кода? или ссылку, где это обсуждается? Последний раз редактировалось mazzy; 21.06.2017 в 11:15. |
|
21.06.2017, 09:28 | #15 |
NavAx
|
Ну по этому вопросу, как раз, разночтений нет. Не встречал еще человека который считает что сваливать все объекты в одну кучу AOT, да еще и в одно пространство имен, это хорошее решение. Это как раз особенность AX по которой мало кто скучать будет.
__________________
Isn't it nice when things just work? |
|
21.06.2017, 16:15 | #16 |
Banned
|
Цитата:
Цитата:
Разница в восприятии не в условиях,а в результатах труда. Мой результат труда - удовлетворить потребности бизнеса клиента. Не код сам по себе, а результат его выполнения. Абстракции и улучшение - для меня это термины бизнес-процессов, не кода. Мне все равно какой код, хоть 2000 строк. Я прикладной программист. Код АX - это прикладной код. Системному программированию там делать нечего. Есть kernel, вот и улучшайте сборщик мусора. Оverengineering возможно потому что салон автомобиля перепутали с двигателем. |
|
|
За это сообщение автора поблагодарили: macklakov (5). |
21.06.2017, 17:41 | #17 |
Участник
|
Цитата:
Сообщение от ax_mct
Разница в восприятии не в условиях,а в результатах труда. Мой результат труда - удовлетворить потребности бизнеса клиента. Не код сам по себе, а результат его выполнения. Абстракции и улучшение - для меня это термины бизнес-процессов, не кода. Мне все равно какой код, хоть 2000 строк. Я прикладной программист.
Для меня мало закончить задачу. Я всегда стараюсь сделать рефакторинг кода в тех классах, которые правлю. Если предстоит скопировать логику класса под какие-то свои цели, я смотрю как можно обобщить её, чтобы не было тупого дублирования. Возникает иерархия классов, происходит выделение общих методов в родительский класс. Дальше эту структуру становится намного легче использовать, добавляя туда полезный код. Естественно, я не делаю такого со стандартом, больше всего ошибок и проблем возникает с кодом компаний, внедряющих собственные решения. Если делается под заказ, то вся работа происходит в сжатые сроки, тут и автотесты писать некогда и рефакторинг проводить времени нет. Скорость без качества. Все конечно довольны, но радость недолго длится. Некоторые ошибки вылезают только лет через 5-7. Пример: Решили сделать загрузку данных батчем и раскидать в журналы по разным компаниям. Делали через changeCompany и runAs. А потом клиент удивляется, куда пропадает часть данных? Смотрим, вроде нормально, правильно... закоммитили транзакцию, блок смены компании закрыли. Только дальше в этом же методе идёт (внимание) удаление связанных данных, которое происходит уже в текущей компании. После этого я нахожу еще кучу классов, которые делают то же самое. Продублировали без зазрения совести. И никто не удосужился протестировать. Скопипастили и всё, мы - молодцы! Поэтому, удовлетворить потребности бизнеса - это еще не самое главное. Главное, чтобы бизнесу не пришлось платить столько же другому программисту, который будет за вами убирать. P.S. ax_mct, я заранее извиняюсь, т.к. не знаю насколько вы хороший и компетентный разработчик. Но ваш подход в целом мне не нравится.
__________________
// no comments |
|
|
За это сообщение автора поблагодарили: AP-1055D (-1), gl00mie (1), ta_and (4). |
21.06.2017, 22:04 | #18 |
Banned
|
Цитата:
Сообщение от dech
...
изменять функционал и добавлять новый все-таки с умом надо. Требовать хороших удобных инструментов любой может. А вот создавать иерархии наследования, выделять интерфейсы, оптимизировать запросы к БД, ускорять работу форм и отчетов не всякому под силу. Многие не задумываясь дублируют метод, или того хуже класс, набитый под завязку этим самым г*. Меняют 2 строчки и довольны. Для меня мало закончить задачу. Я всегда стараюсь сделать рефакторинг кода в тех классах, которые правлю. Если предстоит скопировать логику класса под какие-то свои цели, я смотрю как можно обобщить её, чтобы не было тупого дублирования. Возникает иерархия классов, происходит выделение общих методов в родительский класс. Дальше эту структуру становится намного легче использовать, добавляя туда полезный код. Естественно, я не делаю такого со стандартом ... Пример: Решили сделать загрузку данных батчем и раскидать в журналы по разным компаниям. Делали через changeCompany и runAs. А потом клиент удивляется, куда пропадает часть данных? Смотрим, вроде нормально, правильно... закоммитили транзакцию, блок смены компании закрыли. Только дальше в этом же методе идёт (внимание) удаление связанных данных, которое происходит уже в текущей компании. После этого я нахожу еще кучу классов, которые делают то же самое. Продублировали без зазрения совести. И никто не удосужился протестировать. Скопипастили и всё, мы - молодцы! ... Коллега, вы крайне опасный романтик программирования. Убеждение что дублирование это всегда плохо и надо создавать иерархии наследования, выделять интерфейсы, выделять общие методы в родительский класс и прочее в том (не SYS) коде к которому вы прикасаетесь - это тот самый студенческий максимализм. В описанном примере ошибка логики. То что этот же код продублирован - само по себе это ни плохо ни хорошо и может быть оправданно. По крайней мере в открытом коде где у вас есть возможности искать и находить. Из-за страха/неприятия перед дублированием кода создавать иерархии наследования, выделять интерфейсы, выделять общие методы в родительский класс - это как ни парадоксально звучит и есть overengineering. Использовать подобные средства надо тогда когда говорит здравый смысл, а не просто потому что повтор кода. У нас приложение не группа закрытых DLL, а открытый текст. И как правильно подметил Bobkov, повтор кода - может быть необходим для обеспечения независимости кода. Всегда есть аспекты тестирования, деплоймента, одновременной работы, сырость требований и прочее помимо чистого искуства. Ремесленные аспекты. "если менять то только в одном месте" - это постулат компьютерной науки не имеющий ничего общего с реальной инженерией. Неестественные абстракции, то есть те которые не отражают реальные вещи, - намного хуже чем повтор кода. Последний раз редактировалось ax_mct; 21.06.2017 в 22:10. |
|
|
За это сообщение автора поблагодарили: AP-1055D (3), DAX.Company (1). |
22.06.2017, 04:28 | #19 |
NavAx
|
Цитата:
Сообщение от dech
Требовать хороших удобных инструментов любой может. А вот создавать иерархии наследования, выделять интерфейсы, оптимизировать запросы к БД, ускорять работу форм и отчетов не всякому под силу. Многие не задумываясь дублируют метод, или того хуже класс, набитый под завязку этим самым г*.
Ах, да! О чем это я! Нам же дали замечательную универсальную интеграцию с банками! Недоделанный SSIS. Тоже непростая техническая задачка, я вам скажу. Типа от нормального банка мы получим файл, для которого квалифицированный девелопер легко подправит XSLT и мы получим желанную интеграцию. Только вот бизнес, заразы такие, когда выбирают банк, почему-то не спрашивают, какому стандарту следуют их файлы, они смотрят на выбор и стоимость финансовых инструментов. И бизнес приходит в некоторую оторопь, когда оказывается что в каком нибудь копеешном бухгалтерском пакете все эти банки уже есть. А вот в AX партнер либо продает дополнительный пакет интеграции, нормально поддерживать который у них нет ресурсов, либо лихорадочно ищет человека, который знает и X++ и XSLT и еще в состоянии разобраться с дикими форматами банковских файлов.
__________________
Isn't it nice when things just work? |
|
|
За это сообщение автора поблагодарили: trud (1), AlGol (1). |
22.06.2017, 11:44 | #20 |
Участник
|
Люди радовались целых 5-7 лет
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/ |
|
|
За это сообщение автора поблагодарили: Bobkov (1), dech (1). |
Теги |
sysoperation framework |
|
|