Цитата:
Сообщение от
fed
Просто паттерны в большинстве случаев просто позволяют несколько повысить уровень абстракции и за счет этого более наглядно и обозримо сформулировать сложные алгоритмы, которые на уровне C++ 1.0 наглядно не формируются. Но - как я уже сказал - в бизнес-автоматизации сложных алгоритмов не бывает, в противном случае - они бы не смогли бы быть реализованы как бизнес-процессы.
Я бы сказал, что в аксапте есть грандиозная структурная сложность за счет отсутсивя модульности - понять что за код и на что он влияет довольно трудно. Пости все есть интерфейс, нигде не гарантируется что в коде одного модуля не может быть вставки из другого модуля.
Разбираться с прикладным кодом достаточно сложно.
Во-вторых, на пользовательском уровне такая фабрика проще чем кейз, потому, что она сводит все более простому варианту - "созание по ключу". В case можно напихать в каждый выбор любой логики, соответственно, если
знать про то, что должна сделать фабрика, то проще понять, что делает кусок кода.
К тому же такая фабрика помогает достичь модульности.
К сожалению, тут есть часть недостатков:
- нет визуализации соотвествия ключ-класс
- нет контроля целостности во время компиляции (case в Ax7 проверяется на недублирование ключей в дизайн тайме, правда в Ax6 этого не было, как и рантайма тоже - моя
попытка сделать статический анализ выгребла ~30 всяких ошибок, часть из которых были свитчи )
- она медленнее
С кодом не использующим патернов может быть сложее разбираться - при работе с прикладным кодом аксапты часто хочется тул, который сравнивает два выделенных куска, чтобы понять, в чем тут разница.