Какое описательное имя переменной я могу использовать здесь? - PullRequest
3 голосов
/ 14 октября 2008

Я создаю пользовательский тег Java Struts, предназначенный для создания и форматирования HTML-поля выбора стандартным способом (часть наших рекомендаций по удобству использования).

Каждое поле выбора имеет дополнительное / начальное значение, которое описывает требование значения, возвращаемого элементом выбора, т. Е .:

  • Обязательно - с надписью «Пожалуйста, выберите»
  • Необязательно - "Не выбран"
  • Выбрать все - «Выбрать все»

У пользовательского тега будет свойство, определяющее, какой из них будет использоваться.

Итак, проблема в том, что мне нужно подумать об имени переменной, которое может адекватно объяснить, что оно содержит одно из этих трех значений!
Я буду комментировать код в любом случае, но я бы предпочел, чтобы коллегам не приходилось искать исходный код, чтобы запомнить назначение переменной тега.

Редактировать: Чтобы описать эту проблему, стратегия юзабилити, которую я реализую здесь, заключается в том, что если можно выбрать более 5 элементов, параметры должны отображаться в виде поля выбора , В качестве переключателей будут отображаться не более 5 элементов.
Когда используются переключатели, обязательная метка не будет отображаться (проверка формы будет выдавать жалобу, если в любом случае не выбрано значение).

Ответы [ 4 ]

6 голосов
/ 14 октября 2008

ПРИМЕЧАНИЕ: см. РЕДАКТИРОВАТЬ ниже для другого подхода, чем тот, который приведен здесь

Как насчет requirementConstraint?

<my:customSelect requirementConstraint="Mandatory">
   <option value="1">A</option>
   <option value="2">B</option>
   <option value="3">C</option>
</my:customSelect>

Другая возможность - не указывать значение во-первых. Например, вместо этого вы можете предоставить два отдельных свойства: required ("yes" | "no") и selectAll ("yes" | "no"), чтобы сделать намерение более понятным.

<Ч />

РЕДАКТИРОВАТЬ : На самом деле, я вижу, как три состояния все еще могут быть полезны, если я правильно понимаю ваши требования. Другой возможностью было бы вызвать свойство mustSelect и сделать допустимые значения one (обязательные), any (необязательные) и all (выбрать все). Кроме того, поскольку «Выбрать все» возможно, я предполагаю, что ваш тег customSelect отображает каждый параметр как флажок. Пример использования mustSelect:

Обязательно (хотя бы один)

<my:customSelect mustSelect="one">
   <option value="1">A</option>
   <option value="2">B</option>
   <option value="3">C</option>
</my:customSelect>

Необязательно (ноль или более)

<my:customSelect mustSelect="any">
   <option value="1">A</option>
   <option value="2">B</option>
   <option value="3">C</option>
</my:customSelect>

Выбрать все

<my:customSelect mustSelect="all">
   <option value="1">A</option>
   <option value="2">B</option>
   <option value="3">C</option>
</my:customSelect>
3 голосов
/ 14 октября 2008

«множественность» - правильное имя.

Похоже, вы описываете следующие значения:

Обязательно: 1 Необязательно: 0+ Выбрать все: n

1 голос
/ 14 октября 2008

Это интересный вопрос. Должно быть, я сталкивался с этой ситуацией много раз, но никогда не думал об этом таким образом.

Ваша проблема в том, что ваш язык программирования поддерживает двухсторонние опции (например, ноль или один) намного лучше, чем трехсторонние (ноль один или много). Сокращение, которое возникает «естественно», обычно является сокращением, возникающим из языка программирования, поэтому для трехсторонних опций не существует «естественного» сокращения.

В духе KISS * я предлагаю вам добавить "ZeroOneOrMany" к имени свойства.


[*] Сохраняй это простым, глупый!

0 голосов
/ 14 октября 2008

необязательность

Обязательный / необязательный параметр выглядит как логическое значение, если это необязательное поле.

Select All почти не имеет отношения к нему и может принадлежать ему.

...