Правила IntelliSense для «получить лучший матч» при выборе участника - PullRequest
2 голосов
/ 04 августа 2009

Прежде всего, я наконец сделал это вики, но я считаю, что «простой» прямой ответ весьма желателен, тем более что результат определит унифицированное поведение IDE для всех. Подробнее о простом позже.

Раньше я писал в блоге о том, что значит иметь выпадающий список с хорошим поведением . Если вы еще не читали это, сделайте это сейчас. :)

Visual Studio 2010 добавляет новые функции в процесс выбора IntelliSense, которые делают вещи ... не такими простыми. Я полагаю, что мы можем использовать эти возможности с огромной силой, но без четкого набора правил управления это будет очень сложно.

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

Вот управляемые оси:

  • Фильтрация: «Полный» список содержит все идентификаторы или ключевые слова, разрешенные в текущем местоположении, без учета частично набранного текста, в котором находится курсор.
  • Сортировка: Мы (по крайней мере, пользователи Visual Studio) привыкли к тому, что выпадающий список элементов сортируется в алфавитном порядке. Другие возможности - частичная сортировка по определению «релевантность» и т. Д.
  • Выбор: Основываясь на набранном тексте, мы можем выбрать один элемент в качестве «лучшего соответствия». Состояния выбора:
    • Нет выбранных товаров
    • Пассивный выбор: один элемент выделен, но нажатие ., <space> или аналогичного не заполнит его без использования клавиши со стрелкой, чтобы сделать его:
    • Активный выбор: выбран один элемент, и если Esc или клавиша со стрелкой не нажата, . или <space> и т. Д. Автоматически завершат элемент.

Мой предыдущий свод правил ограничивал манипулирование осью выбора. Они приняли во внимание:

  • Символы, напечатанные как сопоставленные элементам списка с помощью операции StartsWith (сопоставление префиксов), с вариантами определения чувствительности совпадения.
  • Предыдущие завершения, которые начинались с того же набора символов.

Следующее доступно и потенциально полезно, но не все должны использоваться:

  • CamelCase соответствует или underscore_separation ("нас"): длинные, выразительные идентификаторы? Не проблема.
  • Подстроки соответствуют: длинные префиксы, мешающие вашей скорости выбора? Не проблема.
  • Информация, доступная в кратком тексте, где она доступна: я опираюсь на это, но должен признать, что она пригодится в адресной строке Firefox, так что вы никогда не узнаете.

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

  1. Фильтрация
  2. Сортировка
  3. Выбор

1 Ответ

2 голосов
/ 01 сентября 2009

Только одно дополнение или замечание ...

IntelliSense должен адаптироваться к контексту. В случае Visual Studio, где можно использовать только подтипы определенного типа или интерфейса, выпадающий список должен фильтроваться по ним.

IList list = new (Выпадают все типы, реализующие IList) - не все возможные типы!

...