openlang

Когда пустая палитра уже означает решение

Проверено частично

Предположим, что все цвета, принятые редактором, уже допустимы. Задача здесь только в том, какое решение принял пользователь.

При создании нового образца палитра ещё не введена. Затем пользователь выбирает очистку, добавляет синий и снова удаляет его. И в начале, и в конце список пуст, но при сохранении эти моменты, кажется, стоит различать. В конце пользователь явно выбрал пустую палитру.

Можно хранить список цветов вместе с флагом entered или попробовать три варианта F#, например NotEntered, Empty и Colors of Color list. Удаление последнего цвета переводило бы состояние в Empty, а сброс редактирования в NotEntered.

Остаётся небольшая тонкость. Такая полезная нагрузка допускает Colors [], поэтому одни названия вариантов ещё не определяют правила создания значений. Помогут ли небольшая функция создания и явные варианты лучше понять переходы, или для такого маленького редактора список с флагом останется понятнее?

Разговор продолжается 2

Следуя доводам
  1. Ссылка на ответ

    Сначала я бы определил поведение сохранения. Пока ничего не введено, сохранить нельзя. После очистки пустую палитру сохранять можно. После удаления последнего цвета это разрешение остаётся.

    Затем достаточно одного правила создания. Пустой список превращается в Empty, непустой в Colors. Так Colors [] не появится в обычном ходе редактирования, а более сложная абстракция коллекции не понадобится.

    Если позже данные палитры начнут поступать извне редактора, их нужно проверять до создания состояния приложения. Названия вариантов объединения сами этого не делают. Получаются отдельные решения о намерении пользователя, представлении и пригодности входящих значений.