надо их вспомнить )
Гляньте, правильно ли я сокращаю сравнение?
if AHaveAccess and (Sec and ASecValue > 0) or not AHaveAccess and (Sec and ASecValue = 0) then
заменил на
if AHaveAccess xor (Sec and ASecValue = 0) then
правильно
заменяй условия на более простую форму "на бумажке" и получится: if (A and B) or (!A and !B), а дальше арифметика
я вообще такие "оптимизации" стараюсь не использовать ибо вредит чтению кода. Вот как пример, буквально сегодня утром писал этот кусок, вместо этого можно было написать одну строчку, как я обычно и делаю: Result := not (Param.DrawOnlySelectedArrow and not Selected); но тогда оно станет плохо читаться (в данном конкретном случае).
Result:= not Param.DrawOnlySelectedArrow or Selected
Да вариантов море - но нормально читаемый на скрине.
Тут просто у тебя сокращение сложночитаемой - два not, а вот если написать: Result := Selected or not Param.DrawOnlySelectedArrow; То читабельно
ну кстати да, чето я видимо утром мало кофе выпил...
if Selected then Result := True else Result := not Param.DrawOnlySelectedArrow;
блин, пока печатал ты пофиксил :)
Стикер
вот именно это я имел ввиду, когда недавно говорили про "оптимизацию xor'ами"
Я тоже стараюсь скобками пользоваться, но конкретно тут появятся двойные скобки справа у условий и читабельность становится хуже: if (AHaveAccess and (Sec and ASecValue > 0)) or (not AHaveAccess and (Sec and ASecValue = 0)) then Тут уже надо взглядом отсчитывать эти скобки, по крайней мере для меня это не удобно
ну, форматирование с переносом строк тоже никто не отменял )
В редакторре в одну строку это )
Обсуждают сегодня