Biri girintili (neredeyse) diğeri sola dayalı, aynı XML metni için 2 görünüm seçeneği sunan bir XML metin düzenleyicisi yazdım . Sola dayalı bir görünüm için motivasyon, kullanıcıların, XML içeriğinin otomatik bir yan etkisi olan girintiden etkilenmeden, düz metin veya XPath kodunun girintisi için kullandıkları boşluk karakterlerini 'görmelerine' yardımcı olmaktır.
Kullanıcıya yardım edecek, ancak fazla ayrıntıya girmeden sola dayalı mod için görsel düzenleyici ipuçları (editörün düzenlenemez bölümünde) sunmak istiyorum.
Sadece bağlantı hatlarını kullanmayı denedim, ama bu çok meşguldü. Şimdiye kadar bulduğum en iyisi, aşağıdaki editörün sahte bir ekran görüntüsünde gösteriliyor, ancak daha iyi / daha basit alternatifler arıyorum (çok fazla kod gerektirmez).
[Düzenle]
Isı haritası fikrini alarak (from: @jimp) Bunu ve 3 alternatifi alıyorum - etiketli a, b ve c:
Aşağıdaki bölüm, bir dizi başka cevap ve yorumdan fikirleri bir araya getirerek, teklif olarak kabul edilen cevabı açıklamaktadır. Bu soru şu an topluluk wiki olduğundan, lütfen bunu güncellemekten çekinmeyin.
NestView
İç içe geçmiş kodun okunabilirliğini geliştirmek için girintiyi kullanmadan görsel bir yöntem sağlayan bu fikrin adı.
Kontur Çizgileri
NestView içindeki farklı şekilde gölgeli satırların adı
Yukarıdaki resimde, bir XML snippet'inin görselleştirilmesine yardımcı olmak için kullanılan NestView gösterilmektedir. Bu gösterim için XML kullanılmasına rağmen, bu gösterim için yuvalamayı kullanan diğer herhangi bir kod sözdizimi kullanılmış olabilir.
Genel Bakış:
Kontur çizgileri, yuvalama düzeyini iletmek için (bir ısı haritasındaki gibi) gölgelendirilir
Kontur çizgileri, bir yuvalama seviyesinin ne zaman açıldığını veya kapandığını göstermek için açılıdır.
Bir kontur çizgisi, bir yuvalama seviyesinin başlangıcını ilgili uca bağlar.
Birleştirilmiş kontur çizgileri genişliği, ısı haritasına ek olarak yuvalama seviyesinin görsel bir izlenimini verir.
NestView'in genişliği manuel olarak yeniden boyutlandırılabilir olabilir, ancak kod değiştikçe değişmemelidir. Kontur çizgileri, bunu sürdürmek için sıkıştırılabilir veya kesilebilir.
Boş satırlar bazen metni daha sindirilebilir parçalara bölmek için kod kullanılır. Bu tür çizgiler NestView'da özel davranışları tetikleyebilir. Örneğin, ısı haritası sıfırlanabilir veya arka plan rengi kontur çizgisi veya her ikisi de sıfırlanabilir.
Seçili kodla ilişkilendirilmiş bir veya daha fazla kontür çizgisi vurgulanabilir. Seçilen kod seviyesi ile ilişkilendirilmiş kontur çizgisi en çok vurgulanır, ancak diğer iç kontur çizgileri de iç içe geçmiş grubun vurgulanmasına yardımcı olmak için ek olarak 'aydınlanabilir'
Farklı davranışlar (kod katlama veya kod seçimi gibi), bir Kontur Çizgisine tıklamak / çift tıklamakla ilişkilendirilebilir.
Bir kontur çizgisinin farklı bölümleri (ön, orta veya arka kenar) ilişkili farklı dinamik davranışlara sahip olabilir.
Bir ipucu hattı üzerindeki araç ipucuları bir fare gezdirme olayında gösterilebilir
NestView kodu düzenlendikçe sürekli güncellenir. Yuvalamanın iyi dengeli olmadığı durumlarda, yuva seviyesinin sona ermesi gereken yerlerde varsayımlar yapılabilir, ancak ilişkili geçici kontür çizgileri bir şekilde bir uyarı olarak vurgulanmalıdır.
Kontur Çizgilerinin sürükle ve bırak davranışları desteklenebilir. Davranış, kontür çizgisinin sürüklenmekte olan kısmına göre değişebilir.
Sol kenar boşluklarında yaygın olarak bulunan ve satır numaralandırması ve hatalar ve değişiklik durumu için renk vurgulama gibi özellikler NestView'ün üzerine yerleşebilir.
Ek İşlevsellik
Teklif bir dizi ek konuyu ele alıyor - çoğu orijinal sorunun kapsamı dışında, ancak yararlı bir yan etki.
Yuvalanmış bir bölgenin başlangıcını ve sonunu görsel olarak bağlayan
Kontur çizgileri, iç içe geçmiş her seviyenin başlangıcını ve bitişini bağlar
Seçili olan hattın içeriğinin vurgulanması
Kod seçildikten sonra, NestView'deki ilişkili yuva seviyesi vurgulanabilir
Aynı yuva seviyesindeki kod bölgeleri arasında ayrım
XML durumunda, farklı ad alanları için farklı tonlar kullanılabilir. Programlama dilleri (c # gibi) benzer şekilde kullanılabilecek adlandırılmış bölgeleri destekler.
Yuvalama alanı içindeki alanları farklı görsel bloklara ayırma
Ekstra satırlar genellikle okunabilirliği sağlamak için koda eklenir. Bu tür boş çizgiler, NestView'ın kontür çizgilerinin doygunluk seviyesini sıfırlamak için kullanılabilir.
Çoklu Sütun Kod Görünümü
Girintisiz kod, çok sütunlu görünümün kullanımını daha etkili kılar, çünkü sözcük kaydırma veya yatay kaydırmanın gerekme olasılığı daha düşüktür. Bu görünümde, kod bir sütunun altına ulaştığında, diğerine geçer:
Yalnızca görsel yardım sağlamanın ötesinde kullanım
Genel olarak önerildiği gibi, NestView olabilir TreeView denetimden beklenen büyük ölçüde uyumlu olacaktır düzenleme ve seçim bir dizi özellik sağlar. Temel fark, tipik bir TreeView düğümünün 2 bölümden oluşmasıdır: bir genişletici ve düğüm simgesi. Bir NestView kontur çizgisinde en fazla 3 parça olabilir: bir açıcı (eğimli), bir bağlayıcı (dikey) ve bir kapalı (eğimli).
Girintide
Girintili olmayan kod tamamlayıcılarla birlikte sunulan NestView, ancak geleneksel girintili kod görünümünü değiştirmesi muhtemel değildir.
Bir NestView uygulayan herhangi bir çözümün, beyaz boşluk karakterleri de dahil olmak üzere herhangi bir kod metnini etkilemeden girintili ve girintili olmayan kod görünümleri arasında sorunsuz bir şekilde geçiş yapma yöntemi sunması olasıdır. Girintili görünüm için bir teknik, sekme veya boşluk karakterleri yerine dinamik bir sol kenar boşluğunun kullanıldığı 'Sanal Biçimlendirme' olacaktır. NestView'ü dinamik olarak oluşturmak için kullanılan aynı iç içe geçmiş veriler, daha geleneksel görünümlü girintili görünüm için de kullanılabilir.
Baskı
Basılı kodun okunabilirliği için girinti önemli olacaktır. Burada, sekme / boşluk karakterlerinin ve dinamik bir sol kenar boşluğunun olmaması, metnin sağ kenarda sarılabileceği ve girintili görünümün bütünlüğünü koruyabileceği anlamına gelir. Satır numaraları, kodun kelime sarıldığı yeri ve ayrıca girintinin tam konumunu belirten görsel işaretler olarak kullanılabilir:
Ekran Emlak: Düz Vs Girintili
NestView'ün değerli ekran gayrimenkulünü kullanıp kullanamadığı sorusunu ele almak:
Kontur çizgileri, kod düzenleyicinin karakter genişliğiyle aynı genişlikte çalışır. Bu nedenle, 12 karakter genişliğindeki NestView genişliği, kontur çizgileri kesilmeden / sıkıştırılmadan önce 12 iç içe geçme düzeyi alabilir.
Girintili görünümde her iç içe geçme düzeyi için 3 karakter genişliği kullanılıyorsa, iç içe geçme 4 iç içe geçme düzeyine ulaşana kadar boşluk kaydedilir; bu iç içe geçme düzeyinden sonra düz görünümün her iç içe geçme düzeyiyle artan bir yer kazandıran avantajı vardır.
Not: Kod için genellikle en az 4 karakter genişliğinde bir girinti önerilir, ancak XML genellikle daha azıyla yönetir. Ayrıca, Sanal Formatlama hizalama sorunları olmadığından daha az girintiye izin verir
2 görünümün karşılaştırması aşağıda gösterilmiştir:
Yukarıdakilere dayanarak, görünüm stili seçiminin ekran gayrimenkulünden başka faktörlere bağlı olacağı sonucuna varılması muhtemelen adil. Bunun tek istisnası, örneğin bir Netbook / Tablet'te veya çok sayıda kod penceresi açıkken ekran alanının premium olduğu durumdur. Bu durumlarda, yeniden boyutlandırılabilir NestView açık bir kazanan gibi görünmektedir.
Durumlarda kullanın
NestView'ün kullanışlı bir seçenek olabileceği gerçek dünya örneklerine örnekler:
Ekran gayrimenkul bir prim olduğu yerde
a. Tablet, not defteri ve akıllı telefon gibi cihazlarda
b. Web sitelerinde kod gösterilirken
c. Birden fazla kod penceresinin masaüstünde aynı anda görünmesi gerektiğinde
Kod içindeki metnin tutarlı boşluk boşluk girintisi öncelikli ise
İç içe geçmiş kodu incelemek için. Örneğin, alt dillerin (örneğin, C #'daki Linq veya XSLT'deki XPath) yüksek yuva düzeylerine neden olabileceği durumlarda.
Ulaşılabilirlik
Görme bozukluğu olan kişilere yardımcı olmak ve ayrıca çevresel koşullara ve kişisel tercihlere uyacak şekilde yeniden boyutlandırma ve renk seçenekleri sağlanmalıdır:
Düzenlenen kodun diğer sistemlerle uyumluluğu
Bir NestView seçeneğini içeren bir çözüm, ideal olarak, içe aktarılan koddan baştaki sekme ve boşluk karakterlerini (yalnızca biçimlendirme rolüne sahip olarak tanımlanır) çıkarabilir. Daha sonra, bir kez soyulduktan sonra, kod hem sola dayalı hem de girintili görünümlerde değişiklik yapılmadan düzgün bir şekilde oluşturulabilir. Beyaz boşluktan haberdar olmayan birleştirme ve farklı aletler gibi sistemlere dayanan birçok kullanıcı için bu büyük bir endişe kaynağı olacaktır (tam bir gösteri durdurucu değilse).
Diğer işler:
Örtüşen İşaretlemenin Görselleştirilmesi
2004'ten itibaren Wendell Piez tarafından yayınlanan araştırma , örtüşen işaretlemenin, özellikle LMNL'nin görselleştirilmesi sorununu ele almaktadır . Bu, NestView önerisine benzerlik gösteren SVG grafiklerini içerir, çünkü burada onaylanmıştır.
Görüntülerde (aşağıdaki) görsel farklar açıktır, temel işlevsel fark, NestView'ın yalnızca iyi yuvalanmış XML veya kod için tasarlandığından, Wendell Piez'in grafikleri örtüşen yuvalamayı temsil etmek üzere tasarlanmıştır.
Yukarıdaki grafikler, http://www.piez.org adresinden - izin alınarak - çoğaltılmıştır.
Kaynaklar: