2 Stimmen

IntelliSense-Regeln für "beste Übereinstimmung" bei der Mitgliederauswahl

Zunächst einmal habe ich dies schließlich zu einem Wiki gemacht, aber ich glaube, dass eine "einfache", geradlinige Antwort höchst wünschenswert ist, zumal das Ergebnis ein einheitliches IDE-Verhalten für alle definieren würde. Mehr über das Einfache später.

In der Vergangenheit habe ich darüber gebloggt, was es bedeutet, eine brave Mitgliederauswahl Dropdown. Falls Sie es noch nicht gelesen haben, tun Sie es jetzt :)

Visual Studio 2010 fügt dem IntelliSense-Auswahlprozess neue Funktionen hinzu, die die Dinge ... nicht so einfach machen. Ich glaube, dass wir diese Funktionen sehr gut nutzen können, aber ohne einen klaren Satz von Regeln wird es sehr schwierig werden.

Bevor Sie antworten, bedenken Sie dies: Die Regeln sollten es jemandem, der sich mit dem System auskennt, ermöglichen, die IntelliSense-Leistung mit weniger Tastenanschlägen und in kürzerer Zeit als bei anderen Lösungen zu nutzen. Dies ist pas Wenn man ein System so lange und so häufig benutzt wie ich, ist das Umlernen der Muster trivial im Vergleich zu der Zeit, die man spart, wenn man einen guten Algorithmus dahinter hat.

Hier sind die steuerbaren Achsen:

  • Filtern: Eine "vollständige" Liste enthält alle an der aktuellen Position zulässigen Bezeichner oder Schlüsselwörter, ohne Rücksicht auf den teilweise getippten Text, in dem sich der Cursor befindet.
  • Sortierung: Wir (zumindest Visual Studio-Benutzer) sind daran gewöhnt, dass das Dropdown-Menü für die Mitgliederauswahl in alphabetischer Reihenfolge sortiert ist. Andere Möglichkeiten sind eine teilweise Sortierung nach einem Begriff wie "Relevanz" usw.
  • Auswahl: Auf der Grundlage des aktuell eingegebenen Textes haben wir die Möglichkeit, ein Element als "beste Übereinstimmung" auszuwählen. Die Auswahlstatus sind:
    • Kein Element ausgewählt
    • Passive Auswahl: eine Position ist skizziert, aber das Drücken von . , <space> o.ä. füllt es nicht aus, ohne dass Sie es mit einer Pfeiltaste machen:
    • Aktive Auswahl: ein Element ausgewählt, und wenn nicht Esc oder eine Pfeiltaste gedrückt wird, wird ein . o <space> usw. wird das Element automatisch vervollständigt.

Mein vorheriges Regelwerk beschränkte die Manipulation auf die Auswahlachse. Sie berücksichtigten:

  • Eingegebene Zeichen, die mit Listenelementen mit einem StartsWith Operation (Präfixabgleich), mit Varianten für die Unterscheidung von Groß- und Kleinschreibung.
  • Frühere Vervollständigungen, die mit der gleichen Zeichenfolge beginnen.

Die folgenden sind zusätzlich verfügbar und möglicherweise nützlich, müssen aber nicht alle verwendet werden:

  • CamelCase-Übereinstimmungen oder underscore_separation ("us"): Lange, ausdrucksstarke Bezeichner? Kein Problem.
  • Teilstring-Übereinstimmungen: Lange Präfixe behindern die Geschwindigkeit Ihrer Auswahl? Das ist kein Problem.
  • Informationen in der Zusammenfassung, soweit verfügbar: Ich bin dagegen, aber ich muss zugeben, dass es sich in der Firefox-Adressleiste als nützlich erwiesen hat, man kann also nie wissen.

Die von Ihnen verfassten Regeln sollten die (oben fett gedruckten) Achsen in der richtigen Reihenfolge behandeln. In meinen früheren Beiträgen zu diesem Thema waren die Regeln sehr einfach, aber die zusätzlichen Überlegungen werden dies wahrscheinlich etwas komplizierter machen.

  1. Filtern
  2. Sortierung
  3. Auswahl

2voto

MaLio Punkte 2400

Nur eine Ergänzung oder Bemerkung ...

IntelliSense sollte sich an den jeweiligen Kontext anpassen. Im Falle von Visual Studio, wo nur Subtypen eines bestimmten Typs oder einer Schnittstelle verwendet werden dürfen, sollte die Dropdown-Liste nach diesen filtern.

IList list = new (Dropdown alle Typen, die IList implementieren) - nicht alle möglichen Typen!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X