Re[17]: EnumHelper: request for breaking changes
От: Дьяченко Александр Россия  
Дата: 22.09.16 14:31
Оценка: 50 (1)
Здравствуйте, Sinix, Вы писали:

S>И таки что у нас получается:

S>табличку поправил,
S>код поправил + добавил нормальные use case tests. Теперь можно обсуждать.

У меня стойкое впечатление, что и в табличке и в примерах что-то с порядком методов.

NewNew (как должно быть)
set flagfileAccess = fileAccess.SetFlag(FileAccess.Write);fileAccess = fileAccess.SetFlag(FileAccess.Write);
clear flagfileAccess = fileAccess.ClearFlag(FileAccess.Write);fileAccess = fileAccess.ClearFlag(FileAccess.Write);
conditional set (or clear) flagfileAccess = fileAccess.UpdateFlag(FileAccess.Write, enable: true);fileAccess = fileAccess.UpdateFlag(FileAccess.Write, enable: true);
check if all flags are setif (fileAccess.IsFlagSet(FileAccess.Write)) ...if (fileAccess.IsFlagSet(FileAccess.Write)) ...
check if all flags are not setif (fileAccess.IsAnyFlagUnset(FileAccess.Write | FileAccess.Read)) ...if (fileAccess.IsFlagUnset(FileAccess.Write)) ...
check if any flag is setif (fileAccess.IsAnyFlagSet(FileAccess.Write | FileAccess.Read)) ...if (fileAccess.IsAnyFlagSet(FileAccess.Write | FileAccess.Read)) ...
check if any flag is not setif (fileAccess.IsFlagUnset(FileAccess.Write)) ...if (fileAccess.IsAnyFlagUnset(FileAccess.Write | FileAccess.Read)) ...
assert that all flags are setEnumCode.FlagSet(fileAccess, "fileAccess", FileAccess.Write);EnumCode.FlagSet(fileAccess, "fileAccess", FileAccess.Write);
assert that all flags are not setEnumCode.AnyFlagUnset(fileAccess, "fileAccess", FileAccess.Write | FileAccess.Read);EnumCode.FlagUnset(fileAccess, "fileAccess", FileAccess.Write);
assert that any flag setEnumCode.AnyFlagSet(fileAccess, "fileAccess", FileAccess.Write | FileAccess.Read);EnumCode.AnyFlagSet(fileAccess, "fileAccess", FileAccess.Write | FileAccess.Read);
assert that any flag is not setEnumCode.FlagUnset(fileAccess, "fileAccess", FileAccess.Write);EnumCode.AnyFlagUnset(fileAccess, "fileAccess", FileAccess.Write | FileAccess.Read);


S>выбираем, предлагаем ещё


Варианте New, но в нем как-то не хватает симетричности можно попробывать такие варианты:

Вариант 1 (Set-Clear)
set flagfileAccess = fileAccess.SetFlag(FileAccess.Write);
clear flagfileAccess = fileAccess.ClearFlag(FileAccess.Write);
conditional set (or clear) flagfileAccess = fileAccess.SetFlagValue(FileAccess.Write, value: true);
check if all flags are setif (fileAccess.IsAllFlagSet(FileAccess.Write)) ...
check if all flags are not setif (fileAccess.IsAllFlagClear(FileAccess.Write)) ...
check if any flag is setif (fileAccess.IsAnyFlagSet(FileAccess.Write | FileAccess.Read)) ...
check if any flag is not setif (fileAccess.IsAnyFlagClear(FileAccess.Write | FileAccess.Read)) ...
assert that all flags are setEnumCode.AllFlagSet(fileAccess, "fileAccess", FileAccess.Write);
assert that all flags are not setEnumCode.AllFlagClear(fileAccess, "fileAccess", FileAccess.Write);
assert that any flag setEnumCode.AnyFlagSet(fileAccess, "fileAccess", FileAccess.Write | FileAccess.Read);
assert that any flag is not setEnumCode.AnyFlagClear(fileAccess, "fileAccess", FileAccess.Write | FileAccess.Read);
Вариант 2 (Set-Unset)
set flagfileAccess = fileAccess.SetFlag(FileAccess.Write);
clear flagfileAccess = fileAccess.UnsetFlag(FileAccess.Write);
conditional set (or clear) flagfileAccess = fileAccess.UpdateFlag(FileAccess.Write, value: true);
check if all flags are setif (fileAccess.IsAllFlagSet(FileAccess.Write)) ...
check if all flags are not setif (fileAccess.IsAllFlagUnset(FileAccess.Write)) ...
check if any flag is setif (fileAccess.IsAnyFlagSet(FileAccess.Write | FileAccess.Read)) ...
check if any flag is not setif (fileAccess.IsAnyFlagUnset(FileAccess.Write | FileAccess.Read)) ...
assert that all flags are setEnumCode.AllFlagSet(fileAccess, "fileAccess", FileAccess.Write);
assert that all flags are not setEnumCode.AllFlagUnset(fileAccess, "fileAccess", FileAccess.Write);
assert that any flag setEnumCode.AnyFlagSet(fileAccess, "fileAccess", FileAccess.Write | FileAccess.Read);
assert that any flag is not setEnumCode.AnyFlagUnset(fileAccess, "fileAccess", FileAccess.Write | FileAccess.Read);
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.