psilogic: (Default)
[personal profile] psilogic
Задачка: как оптимизировать такой код, чтобы убрать копи-пасты?
Напрашивается заведение двух функций... а, может, кто-нибудь знает другие трюки?


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.

Date: 2011-04-05 05:02 pm (UTC)
From: [identity profile] 3seemingmonkeys.livejournal.com
ну еще проверки поставить елси такой случай возможен (мне было видение что ето не надо обрабатывать)

if (s = !u && bef) {
seek;
}
if (u && bef || !u && aft) {
read;
}
if (!s && u && aft) {
seek;
}

Date: 2011-04-05 06:58 pm (UTC)
From: [identity profile] http://users.livejournal.com/_stilgar/
Итого, копипасту уполовинили, читаемость кода - тоже :)
Page generated Sep. 3rd, 2025 05:35 pm
Powered by Dreamwidth Studios