Прежде всего, я наконец сделал это вики, но я считаю, что «простой» прямой ответ весьма желателен, тем более что результат определит унифицированное поведение IDE для всех. Подробнее о простом позже.
Раньше я писал в блоге о том, что значит иметь выпадающий список с хорошим поведением . Если вы еще не читали это, сделайте это сейчас. :)
Visual Studio 2010 добавляет новые функции в процесс выбора IntelliSense, которые делают вещи ... не такими простыми. Я полагаю, что мы можем использовать эти возможности с огромной силой, но без четкого набора правил управления это будет очень сложно.
Прежде чем ответить, запомните следующее: Правила должны позволять кому-то "в гармонии" с системой пользоваться преимуществами IntelliSense с меньшим количеством нажатий клавиш и меньшим временем, чем предоставляют другие решения. Это , а не только для того, к чему вы привыкли. Если вы используете систему так же часто и долго, как и я, повторное изучение шаблонов становится тривиальным по сравнению со временем, которое экономит, чтобы иметь хороший алгоритм.
Вот управляемые оси:
- Фильтрация: «Полный» список содержит все идентификаторы или ключевые слова, разрешенные в текущем местоположении, без учета частично набранного текста, в котором находится курсор.
- Сортировка: Мы (по крайней мере, пользователи Visual Studio) привыкли к тому, что выпадающий список элементов сортируется в алфавитном порядке. Другие возможности - частичная сортировка по определению «релевантность» и т. Д.
- Выбор: Основываясь на набранном тексте, мы можем выбрать один элемент в качестве «лучшего соответствия». Состояния выбора:
- Нет выбранных товаров
- Пассивный выбор: один элемент выделен, но нажатие
.
, <space>
или аналогичного не заполнит его без использования клавиши со стрелкой, чтобы сделать его:
- Активный выбор: выбран один элемент, и если
Esc
или клавиша со стрелкой не нажата, .
или <space>
и т. Д. Автоматически завершат элемент.
Мой предыдущий свод правил ограничивал манипулирование осью выбора. Они приняли во внимание:
- Символы, напечатанные как сопоставленные элементам списка с помощью операции
StartsWith
(сопоставление префиксов), с вариантами определения чувствительности совпадения.
- Предыдущие завершения, которые начинались с того же набора символов.
Следующее доступно и потенциально полезно, но не все должны использоваться:
- CamelCase соответствует или underscore_separation ("нас"): длинные, выразительные идентификаторы? Не проблема.
- Подстроки соответствуют: длинные префиксы, мешающие вашей скорости выбора? Не проблема.
- Информация, доступная в кратком тексте, где она доступна: я опираюсь на это, но должен признать, что она пригодится в адресной строке Firefox, так что вы никогда не узнаете.
Правила, которые вы пишете, должны обращаться к осям (жирным шрифтом выше) по порядку. В моих предыдущих постах на эту тему правила были очень простыми, но дополнительные соображения, вероятно, сделают это немного сложнее.
- Фильтрация
- Сортировка
- Выбор