Я написав текстовий редактор XML, який пропонує 2 варіанти перегляду одного й того ж XML-тексту, один з відступом (практично), а другий з обґрунтуванням зліва. Мотивація виправданого перегляду ліворуч полягає в тому, щоб допомогти користувачам "бачити" символи пробілів, які вони використовують для відступу простого тексту або коду XPath без втручання з відступу, що є автоматизованим побічним ефектом контексту XML.
Я хочу надати візуальні підказки (у редакції, що не може редагуватися) для виправданого ліворуч режиму, який допоможе користувачеві, але не надто докладно.
Я намагався просто використовувати з'єднувальні лінії, але це здавалося занадто зайнятим. Найкраще, що я придумав дотепер, показано на макетному екрані редактора нижче, але я шукаю кращі / простіші альтернативи (для яких не потрібно занадто багато коду).
[Редагувати]
Беручи ідею теплової карти (від: @jimp), я отримую цю та три альтернативи - з позначкою a, b і c:
Наступний розділ описує прийняту відповідь як пропозицію, об'єднуючи ідеї з ряду інших відповідей та коментарів. Оскільки це питання тепер є вікі спільноти, будь ласка, оновіть це.
NestView
Назва цієї ідеї, яка забезпечує візуальний метод покращення читабельності вкладеного коду без використання відступів.
Контурні лінії
Назва для різних затінених ліній у NestView
Зображення вище показує NestView, який використовується для візуалізації фрагмента XML. Хоча XML використовується для цієї ілюстрації, будь-який інший синтаксис коду, який використовує вкладення, міг би бути використаний для цієї ілюстрації.
Огляд:
Лінії контуру заштриховані (як у тепловій карті) для передачі рівня гніздування
Лінії контуру під кутом показують, коли рівень гніздування відкривається чи закривається.
Лінія контуру пов'язує початок рівня гніздування з відповідним кінцем.
Об'єднана ширина контурних ліній, крім теплової карти, візуально вражає рівень гніздування.
Ширина NestView може бути змінена вручну, але не повинна змінюватися в міру зміни коду. Контурні лінії можна або стиснути, або обрізати, щоб не досягти цього.
Порожні рядки іноді використовуються кодом, щоб розбити текст на більш зручні шматки. Такі лінії можуть викликати особливу поведінку в NestView. Наприклад, теплова карта може бути скинута або використана лінія контуру кольору фону або те і інше.
Можна виділити одну або кілька контурних ліній, пов'язаних з обраним на даний момент кодом. Лінія контуру, пов'язана з вибраним рівнем коду, буде особливо підкреслена, але інші контурні лінії також можуть «засвітитися» на додаток, щоб допомогти виділити містити вкладену групу
Різні форми поведінки (такі як складання коду або вибір коду) можуть бути пов’язані з клацанням / подвійним клацанням по лінії контуру.
У різних частинах контурної лінії (передній, середній або кінцевий край) можуть бути пов'язані різні динамічні форми поведінки.
Підказки можуть бути показані на заході миші на лінії контуру
По мірі редагування коду NestView постійно оновлюється. Там, де гніздування не є добре збалансованим, можна припустити, де рівень гніздування повинен закінчуватися, але пов'язані тимчасові контурні лінії повинні бути певним чином виділені як попередження.
Можливість підтримувати перетягування поведінки контурних ліній. Поведінка може змінюватись залежно від частини перетягнутої лінії контуру.
Особливості, які зазвичай зустрічаються у лівому полі, такі як нумерація рядків та виділення кольорів для помилок та стану зміни, можуть накладати NestView.
Додаткова функціональність
Пропозиція стосується цілого ряду додаткових питань - багато хто виходить за рамки початкового питання, але є корисним побічним ефектом.
Візуально пов'язуючи початок і кінець вкладеної області
Лінії контуру з'єднують початок і кінець кожного вкладеного рівня
Виділення контексту поточно вибраного рядка
Після вибору коду може бути виділено пов'язаний рівень гніздування в NestView
Розмежування між кодовими регіонами на одному рівні гніздування
У випадку XML різні відтінки можуть використовуватися для різних просторів імен. Мови програмування (наприклад, c #) підтримують названі регіони, які можуть бути використані аналогічно.
Розділення ділянок в межах гніздування на різні візуальні блоки
Додаткові рядки часто вставляються в код, щоб сприяти читанню. Такі порожні лінії можна використовувати для скидання рівня насичення контурних ліній NestView.
Перегляд колон з декількома стовпцями
Код без відступів робить використання перегляду в декількох стовпцях більш ефективним, оскільки обробка слів або горизонтальна прокрутка менш ймовірні. У цьому перегляді, як тільки код досягне нижньої частини одного стовпця, він переходить у наступний:
Використання понад просто надання наочної допомоги
Як запропоновано в огляді, NestView може забезпечити діапазон функцій редагування та вибору, які б широко відповідали тому, що очікується від елемента управління TreeView. Ключова відмінність полягає в тому, що типовий вузол TreeView має 2 частини: розширювач та значок вузла. Лінія контуру NestView може містити до 3 частин: відкривач (похилий), з'єднувач (вертикальний) і закриваючий (похилий).
Про відступ
NestView, представлений поряд з невідступними кодовими доповненнями, але навряд чи замінить звичайний вид з відступом коду.
Цілком імовірно, що будь-які рішення, що застосовують NestView, дадуть спосіб безперешкодного перемикання між відступними та невідступними видами коду, не впливаючи на будь-який текст тексту коду, включаючи символи пробілу. Однією з методик для вибору з відступом буде «Віртуальне форматування» - де динамічне ліве поле використовується замість символів вкладки або пробілу. Ті ж дані рівня гніздування, які використовуються для динамічного візуалізації NestView, також можуть використовуватися для більш звичайного вигляду з відступом.
Друк
Відступ буде важливим для читабельності друкованого коду. Тут відсутність символів табуляції та пробілів та динамічного лівого поля означає, що текст може загортатись у правій межі та зберігати цілісність відведеного подання. Номери рядків можуть бути використані як візуальні маркери, які вказують, де кодується слово, а також точне положення відступу:
Екранна нерухомість: Плоскі проти відступів
Вирішуючи питання про те, чи NestView використовує цінні екранні нерухомості:
Лінії контуру добре працюють із шириною, такою ж, як і ширина символу редактора коду. Таким чином, ширина NestView шириною 12 символів може вмістити 12 рівнів вкладення, перш ніж контурні лінії будуть усічені / стиснуті.
Якщо в розрізаному представленні використовується 3 ширини символів для кожного рівня гніздування, то простір зберігається, поки гніздування не досягне 4 рівнів вкладення, після цього рівня гніздування плоский вид має перевагу в економії місця, яка збільшується з кожним рівнем введення.
Примітка: Для коду часто рекомендується мінімальний відступ у ширину 4 символів, однак XML часто керується меншим розміром. Також віртуальне форматування дозволяє використовувати менше відступів, оскільки немає ризику вирівнювання
Порівняння двох поглядів показано нижче:
Виходячи з вищесказаного, можливо, справедливо зробити висновок, що вибір стилю перегляду буде ґрунтуватися на факторах, відмінних від екрану нерухомості. Єдиним винятком є те, що екран на екрані розширюється, наприклад, на Netbook / Tablet або коли відкрито кілька вікон коду. У цих випадках зміна розміру NestView, здавалося б, є явним переможцем.
Використовуйте випадки
Приклади реальних прикладів, коли NestView може бути корисним варіантом:
Там, де екранна нерухомість перевага
а. На таких пристроях, як планшети, блокноти та смартфони
б. Під час показу коду на веб-сайтах
c. Коли на робочому столі одночасно потрібно бачити кілька вікон коду
Якщо послідовне відступ тексту в коді є пріоритетним
Для огляду глибоко вкладеного коду. Наприклад, коли підмови (наприклад, Linq в C # або XPath в XSLT) можуть спричинити високий рівень вкладеності.
Доступність
Необхідно забезпечити параметри зміни розміру та кольору, щоб допомогти особам із порушеннями зору, а також відповідати умовам навколишнього середовища та особистим уподобанням:
Порівнюваність відредагованого коду з іншими системами
Рішення, що включає в себе параметр NestView, в ідеалі має бути здатним знімати провідні символи вкладок і пробілів (ідентифіковані як лише ті, що виконують роль форматування) з імпортованого коду. Потім, після вилучення, код може бути викладений акуратно як у виправданому, так і у відрізках зліва, без змін. Для багатьох користувачів, які покладаються на такі системи, як інструменти злиття та розходження, які не знають пробілів, це буде серйозною проблемою (якщо не повною зупинкою шоу).
Інші роботи:
Візуалізація розмітки, що перекривається
Опубліковане дослідження Венделла П'єза , датоване 2004 року, стосується питання візуалізації розмітки, що перекривається, зокрема LMNL . Сюди входить SVG-графіка зі значною схожістю з пропозицією NestView, як така, вони тут визнані.
Візуальні відмінності чіткі на зображеннях (нижче), ключове функціональне відмінність полягає в тому, що NestView призначений лише для добре вкладеного XML або коду, тоді як графіка Венделла П'єза призначена для відображення перекритих вкладень.
Наведена вище графіка - з доброго дозволу - від http://www.piez.org
Джерела: