итак, плюсы/минусы реализаций:
1. выделить одно из значений как null. например, использовать не перечисление NoYes, а перечисление из 3х значений - NoYesNull
1.1. плюсы:
1.1.1. очень компактно и просто,
1.1.2. легко сериализируется,
1.1.3. легко встраивается в pack/unpack
1.1.4. полный контроль типов со стороны IDE
1.2. минусы:
1.2.1. не всегда это можно сделать. см. пример с хранением контрольной суммы.
1.2.2. нужны функции-преобразователи, чтобы преобразовать к интерфейсному типу. для данного примера: чтобы спросить у пользователя привычную галочку, нужен преобразователь NoYesNull <-> NoYes. Причем Null значение преобрауется в control.enabled(false). или в control.visible(false)
1.2.3. обработка Null-значения будет раскидана по всему коду
2. объявлять/хранить как два независимые поля (две независимые переменные)
2.1.плюсы:
2.1.2. легко сериализируется,
2.1.3. легко встраивается в pack/unpack
2.1.4. полный контроль типов со стороны IDE
2.2.минусы:
2.2.1. громоздко - передавать эту пару в методы - забибикаешься.
3. объявлять как контейнер
3.1. плюсы:
3.1.1. очень компактно и просто,
3.1.2. легко сериализируется,
3.1.3. легко встраивается в pack/unpack
3.2. минусы:
3.2.1. никакого контроля типов.
3.2.2. все ошибки в runtime
3. создать класс (что-то вроде tuple)
3.1. плюсы
3.1.1. контроль типов
3.1.2. нормально сериализуется - см. AIF-примитивы
3.1.3. удобно отлаживать - достаточно переопределить метод toString
3.2. минусы
3.2.1. ни фига не компактно и не просто - очень громоздко
3.2.2. поседеешь пока встроишь в pack/unpck
3.2.3. очень неудобно отображать эти классы в поля формы или диалога
4. временная таблица?
4.1. плюсы
4.1.1. контроль типов
4.1.2. нормально сериализуется
4.1.3. легко работать с набором значений (не одна запись, а несколько во временной таблице)
4.2. минусы
4.2.1. неудобно отлаживать
4.2.2. неудобно передавать значения
4.2.3. неудобно создавать подобные пары - слишком много телодвижений надо сделать
3.2.3. очень неудобно отображать эти классы в поля формы или диалога
буду рад вашим замечаниями и дополнениям.
|