Цитата:
Сообщение от
sukhanchik
Мысль интересная, но обычно все пытаются облегчить написание кода или процесс его вливания в общее приложение, но никто обычно не задумывается про удобство чтения кода (тут конечно нет, но когда макросами заменяют целые выражения типа метода find или еще как-то - то вопрос возникает).
А между прочим - удобство чтения кода - залог и определенная гарантия его работоспособности.
Ага, я когда-то давно сопровождал вот примерно такой код (все на макросах, 1000+строк в методе) Получил много незабываемого удовольствия при модификации и отладке.
X++:
...
#localmacro.attrFilter
%1
#endMacro
...
#localmacro.table
tableMapping=new IntegrTableMapping_Master(tableNum(#tableName), '%1');
ret.add(tableMapping,'%2');
#endmacro
#localmacro.field
tableMapping.add(
new IntegrFieldMapping(
#attrFilter(IntegrTableFieldAttribute::construct(
tableNum(#tableName), fieldNum(#tableName, %1)
))
)
);
#endmacro
#localmacro.GUIDField
tableMapping.add(
new IntegrFieldMapping_Guid(
#attrFilter(IntegrTableFieldAttribute::construct(
tableNum(#tableName), fieldNum(#tableName, %1)
))
, tableNum(%2), fieldNum(%2, %3) #ifnot.empty(%4), %4 #endif
)
);
#endmacro
// ...
// еще десяток подобных макросов на все случаи жизни, но зато дальше весь код был "простой и удобный" :)
// ...
#define.tableName(InventJournalTable)
#table(inventJournalTable)
#field(GUID)
#field(journalId)
#field(JournalType)
#field(JournalNameId)
#field(JournalDate)
#GUIDField(fromInventLocation, InventLocation, inventLocationID)
#GUIDField(toInventLocation, InventLocation, inventLocationID)
#method(department)
//...
P.S. Кстати, автор кода - действительно ОЧЕНЬ сильный программист. Прошу его на меня не обижаться.