Программерам
Apr. 5th, 2011 03:19 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Задачка: как оптимизировать такой код, чтобы убрать копи-пасты?
Напрашивается заведение двух функций... а, может, кто-нибудь знает другие трюки?
Upd: Порядок вызова seek/read важен - там в файле два последовательных блока, наличие/отсутствие которых определяется флагами OpAfter/OpBefore.
Напрашивается заведение двух функций... а, может, кто-нибудь знает другие трюки?
if (undoCase) { if (op & OpBefore) { uf.read(&hb, sizeof(hb)); *hNew= hb; ++hNew; ++i; } if (op & OpAfter) { uf.seek(sizeof(GHarmonicBase), SEEK_CUR);//pass redo data ++hOld; } } else { if (op & OpBefore) { uf.seek(sizeof(GHarmonicBase), SEEK_CUR);//pass undo data ++hOld; } if (op & OpAfter) { uf.read(&hb, sizeof(hb)); *hNew= hb; ++hNew; ++i; } }
Upd: Порядок вызова seek/read важен - там в файле два последовательных блока, наличие/отсутствие которых определяется флагами OpAfter/OpBefore.
no subject
Date: 2011-04-05 01:07 pm (UTC)1) удаления надо сохранить то, что было ДО удаления (для undo),
2) вставки надо сохранить то, что будет ПОСЛЕ вставки (для redo),
3) изменения надо сохранить то, что было ДО (для undo) и будет ПОСЛЕ (для redo) изменения
так и получается одновременно :)
no subject
Date: 2011-04-05 01:15 pm (UTC)Любой подобный наворот говорит о неправильном дизайне. Просто ловить ошибки и отрабатывать.
no subject
Date: 2011-04-05 01:16 pm (UTC)обычный undo/redo в редакторе
no subject
Date: 2011-04-05 01:18 pm (UTC)no subject
Date: 2011-04-05 01:24 pm (UTC)no subject
Date: 2011-04-05 02:15 pm (UTC)Любая нештатная ситуация легко обрабатывается катчем. А лучше книжки почитать.
no subject
Date: 2011-04-05 02:17 pm (UTC)no subject
Date: 2011-04-05 02:29 pm (UTC)no subject
Date: 2011-04-05 02:55 pm (UTC)catch команду Undo {
делать Undo
}
no subject
Date: 2011-04-05 03:01 pm (UTC)no subject
Date: 2011-04-05 03:03 pm (UTC)no subject
Date: 2011-04-05 03:09 pm (UTC)кроме вас, остальные комментаторы суть ухватили
продОлжите строить из себя умного, или, может, хватит? :)
no subject
Date: 2011-04-05 03:28 pm (UTC)