ฉันได้เขียนโปรแกรมแก้ไขข้อความ XMLที่ให้ 2 ตัวเลือกมุมมองสำหรับข้อความ XML เดียวกันหนึ่งเยื้อง (จริง), อื่น ๆ ชิดซ้าย แรงจูงใจสำหรับมุมมองที่ถูกต้องทางซ้ายคือการช่วยให้ผู้ใช้เห็น 'อักขระช่องว่างที่พวกเขากำลังใช้สำหรับการเยื้องของข้อความธรรมดาหรือรหัส XPath โดยไม่มีการแทรกแซงจากการเยื้องซึ่งเป็นผลข้างเคียงโดยอัตโนมัติของบริบท XML
ฉันต้องการที่จะให้เบาะแสที่มองเห็น (ในส่วนที่ไม่สามารถแก้ไขได้ของการแก้ไข) สำหรับโหมดชิดซ้ายที่จะช่วยให้ผู้ใช้ แต่ไม่ได้รับการทำอย่างละเอียดเกินไป
ฉันลองใช้สายเชื่อมต่อ แต่มันดูยุ่งเกินไป สิ่งที่ดีที่สุดที่ฉันเคยได้รับมาจนถึงตอนนี้แสดงอยู่ในสกรีนช็อตของเครื่องมือแก้ไขด้านล่าง แต่ฉันกำลังมองหาทางเลือกที่ดีกว่า / ง่ายกว่า (ซึ่งไม่ต้องการรหัสมากเกินไป)
[แก้ไข]
รับแนวคิด heatmap (จาก: @jimp) ฉันได้รับสิ่งนี้และ 3 ทางเลือก - ระบุว่า a, b และ c:
ส่วนต่อไปนี้อธิบายคำตอบที่ยอมรับว่าเป็นข้อเสนอโดยรวบรวมแนวคิดจากคำตอบและความคิดเห็นอื่นจำนวนมาก เนื่องจากคำถามนี้เป็นวิกิชุมชนตอนนี้โปรดอย่าลังเลที่จะอัปเดต
NestView
ชื่อสำหรับแนวคิดนี้ซึ่งมีวิธีการแสดงภาพเพื่อปรับปรุงความสามารถในการอ่านของโค้ดที่ซ้อนกันโดยไม่ต้องใช้การเยื้อง
เส้นโค้ง
ชื่อของเส้นที่แรเงาแตกต่างกันภายใน NestView
ภาพด้านบนแสดง NestView ที่ใช้เพื่อช่วยให้เห็นภาพตัวอย่าง XML แม้ว่า XML จะใช้สำหรับภาพประกอบนี้ แต่มีการใช้ไวยากรณ์รหัสอื่น ๆ ที่ใช้ในการซ้อนสำหรับภาพประกอบนี้
ภาพรวม:
เส้นชั้นความสูงจะถูกแรเงา (เหมือนในแผนที่ความร้อน) เพื่อถ่ายทอดระดับการทำรัง
เส้นชั้นความสูงมีมุมเพื่อแสดงเมื่อระดับการซ้อนถูกเปิดหรือปิด
เส้นชั้นความสูงจะเชื่อมโยงการเริ่มต้นของระดับการซ้อนกับส่วนท้ายที่เกี่ยวข้อง
ความกว้างที่รวมกันของเส้นชั้นความสูงให้ภาพที่มองเห็นได้ของระดับการซ้อนนอกเหนือไปจากแผ่นความร้อน
ความกว้างของ NestView อาจปรับขนาดได้ด้วยตนเอง แต่ไม่ควรเปลี่ยนแปลงเมื่อมีการเปลี่ยนแปลงรหัส เส้นรูปทรงสามารถถูกบีบอัดหรือถูกตัดทอนเพื่อให้บรรลุนี้
บางครั้งบรรทัดที่ว่างเปล่าจะใช้รหัสเพื่อแยกข้อความเป็นชิ้นย่อยได้มากขึ้น บรรทัดดังกล่าวอาจก่อให้เกิดพฤติกรรมพิเศษใน NestView ตัวอย่างเช่น heatmap อาจถูกรีเซ็ตหรือใช้เส้นสีพื้นหลังหรือทั้งสองอย่าง
เส้นชั้นความสูงหนึ่งเส้นหรือมากกว่าที่เชื่อมโยงกับรหัสที่เลือกในปัจจุบันสามารถเน้นได้ เส้นชั้นความสูงที่เกี่ยวข้องกับระดับรหัสที่เลือกจะเน้นมากที่สุด แต่เส้นชั้นความสูงอื่น ๆ สามารถ 'สว่างขึ้น' เพิ่มเติมเพื่อช่วยเน้นกลุ่มที่ซ้อนกันที่มีอยู่
พฤติกรรมที่แตกต่าง (เช่นการพับโค้ดหรือการเลือกรหัส) สามารถเชื่อมโยงกับการคลิก / ดับเบิลคลิกบนเส้นรูปโค้ง
ส่วนต่าง ๆ ของเส้นชั้นความสูง (นำหน้า, กลางหรือตามขอบ) อาจมีพฤติกรรมแบบไดนามิกที่แตกต่างกัน
เคล็ดลับเครื่องมือสามารถแสดงบนเหตุการณ์โฮเวอร์เมาส์เหนือเส้นชั้นความสูง
NestView ได้รับการปรับปรุงอย่างต่อเนื่องเมื่อมีการแก้ไขรหัส ในกรณีที่การทำรังไม่ได้ตั้งสมมติฐานอย่างสมดุลสามารถทำได้ในกรณีที่ระดับการซ้อนควรจบลง แต่เส้นเน้นเส้นชั้นความสูงชั่วคราวที่เกี่ยวข้องจะต้องถูกเน้นในบางวิธีเพื่อเป็นการเตือน
สามารถรองรับการลากและวางของ Contour Lines ได้ พฤติกรรมอาจแตกต่างกันไปตามส่วนของเส้นชั้นความสูงที่ถูกลาก
คุณสมบัติที่พบได้ทั่วไปที่ขอบซ้ายเช่นหมายเลขบรรทัดและการเน้นสีเพื่อหาข้อผิดพลาดและสถานะการเปลี่ยนแปลงอาจซ้อนทับ NestView
ฟังก์ชั่นเพิ่มเติม
ข้อเสนอนี้กล่าวถึงปัญหาเพิ่มเติมหลายประการโดยส่วนใหญ่อยู่นอกขอบเขตของคำถามเดิม แต่มีผลข้างเคียงที่เป็นประโยชน์
มองเห็นการเชื่อมโยงจุดเริ่มต้นและจุดสิ้นสุดของภูมิภาคที่ซ้อนกัน
เส้นชั้นความสูงจะเชื่อมต่อจุดเริ่มต้นและจุดสิ้นสุดของแต่ละระดับที่ซ้อนกัน
เน้นบริบทของบรรทัดที่เลือกในปัจจุบัน
เมื่อเลือกรหัสแล้วระบบจะไฮไลต์ระดับรังที่เกี่ยวข้องใน NestView
แยกความแตกต่างระหว่างขอบเขตของรหัสในระดับซ้อนกัน
ในกรณีของ XML เฉดสีที่ต่างกันสามารถใช้กับเนมสเปซที่แตกต่างกันได้ ภาษาโปรแกรม (เช่น c #) รองรับการตั้งชื่อภูมิภาคที่สามารถใช้งานได้ในลักษณะเดียวกัน
แบ่งพื้นที่ภายในพื้นที่ทำรังออกเป็นบล็อคภาพต่างๆ
มีการแทรกบรรทัดเพิ่มเติมลงในรหัสเพื่อช่วยให้สามารถอ่านได้ง่าย สามารถใช้บรรทัดว่างเหล่านี้เพื่อรีเซ็ตระดับความอิ่มตัวของเส้นชั้นความสูงของ NestView
มุมมองโค้ดหลายคอลัมน์
รหัสที่ไม่มีการเยื้องทำให้การใช้มุมมองแบบหลายคอลัมน์มีประสิทธิภาพมากขึ้นเนื่องจากการตัดคำหรือการเลื่อนแนวนอนนั้นมีแนวโน้มน้อยกว่าที่ต้องการ ในมุมมองนี้เมื่อโค้ดได้มาถึงด้านล่างของคอลัมน์หนึ่งแล้วโค้ดจะไหลไปยังคอลัมน์ถัดไป:
การใช้นอกเหนือจากการให้ความช่วยเหลือด้านภาพ
ตามที่เสนอในภาพรวม NestView สามารถให้บริการช่วงของการแก้ไขและคุณสมบัติการเลือกซึ่งจะสอดคล้องกับสิ่งที่คาดหวังจากการควบคุม TreeView ความแตกต่างที่สำคัญคือโหนด TreeView ทั่วไปมี 2 ส่วนคือส่วนขยายและไอคอนโหนด เส้นชั้นความสูงของ NestView สามารถมีได้มากถึง 3 ส่วนคือตัวเปิด (แบบลาด) ตัวเชื่อมต่อ (แนวตั้ง) และแบบปิด (แบบเอียง)
ในการเยื้อง
NestView นำเสนอควบคู่ไปกับการเติมโค้ดที่ไม่เยื้อง แต่ไม่น่าจะมาแทนที่มุมมองรหัสเยื้องแบบดั้งเดิม
เป็นไปได้ว่าโซลูชันใด ๆ ที่ใช้ NestView จะให้วิธีการสลับระหว่างการดูโค้ดที่เยื้องและไม่เยื้องโดยไม่มีผลกับข้อความโค้ดใด ๆ รวมถึงอักขระช่องว่าง เทคนิคหนึ่งสำหรับมุมมองที่เยื้องจะเป็น 'การจัดรูปแบบเสมือน' - ซึ่งใช้ระยะขอบซ้ายแบบไดนามิกแทนแท็บหรืออักขระเว้นวรรค ข้อมูลระดับการซ้อนเดียวกันกับที่ใช้ในการเรนเดอร์ NestView แบบไดนามิกยังสามารถใช้สำหรับมุมมองที่เยื้องเข้าด้วยกัน
การพิมพ์
การเยื้องจะมีความสำคัญสำหรับความสามารถในการอ่านของรหัสที่พิมพ์ ที่นี่ไม่มีแท็บ / ช่องว่างอักขระและระยะขอบซ้ายแบบไดนามิกหมายความว่าข้อความสามารถตัดที่ขอบขวาและยังคงความสมบูรณ์ของมุมมองเยื้อง หมายเลขบรรทัดสามารถใช้เป็นตัวทำเครื่องหมายภาพที่ระบุว่าโค้ดห่อด้วยคำและตำแหน่งของการเยื้องที่แน่นอน:
Screen Real-Estate: Flat Vs เยื้อง
การตอบคำถามว่า NestView ใช้อสังหาริมทรัพย์ที่มีค่าบนหน้าจอหรือไม่:
เส้นรูปโค้งทำงานได้ดีกับความกว้างเหมือนกับความกว้างอักขระของตัวแก้ไขรหัส ความกว้างของ NestView ที่มีความกว้าง 12 ตัวอักษรจึงสามารถรองรับการซ้อน 12 ระดับก่อนที่จะตัดหรือบีบอัดเส้นชั้นความสูง
หากมุมมองที่เยื้องใช้ความกว้าง 3 อักขระสำหรับแต่ละระดับการซ้อนจะมีการบันทึกพื้นที่ว่างไว้จนกว่าการซ้อนจะถึง 4 ระดับของการซ้อนหลังจากระดับการซ้อนนี้มุมมองแบบแบนจะมีข้อดีในการประหยัดพื้นที่ซึ่งเพิ่มขึ้นในแต่ละระดับการซ้อน
หมายเหตุ: แนะนำให้ใช้การเยื้องต่ำสุดของความกว้าง 4 อักขระสำหรับโค้ดอย่างไรก็ตาม XML มักจะจัดการด้วยความที่น้อยกว่า นอกจากนี้การจัดรูปแบบเสมือนจริงยังอนุญาตให้ใช้การเยื้องน้อยลงเนื่องจากไม่มีความเสี่ยงของปัญหาการจัดตำแหน่ง
การเปรียบเทียบ 2 มุมมองแสดงไว้ด้านล่าง:
จากข้อมูลข้างต้นอาจสรุปได้ว่าการเลือกสไตล์การดูจะขึ้นอยู่กับปัจจัยอื่น ๆ ข้อยกเว้นหนึ่งข้อก็คือพื้นที่หน้าจอเป็นพรีเมี่ยมตัวอย่างเช่นบน Netbook / แท็บเล็ตหรือเมื่อเปิดหน้าต่างรหัสหลายบาน ในกรณีเหล่านี้ NestView ที่ปรับขนาดได้ดูเหมือนจะเป็นผู้ชนะที่ชัดเจน
ใช้เคส
ตัวอย่างของตัวอย่างจริงที่ NestView อาจเป็นตัวเลือกที่มีประโยชน์:
ที่ซึ่งธุรกิจอสังหาริมทรัพย์อยู่ในระดับพรีเมี่ยม
บนอุปกรณ์เช่นแท็บเล็ตสมุดบันทึกและสมาร์ทโฟน
ข เมื่อแสดงรหัสบนเว็บไซต์
ค เมื่อหน้าต่างรหัสหลายหน้าต่างต้องปรากฏบนเดสก์ท็อปพร้อมกัน
ในกรณีที่การเว้นวรรคเยื้องที่สอดคล้องกันของข้อความภายในรหัสเป็นสำคัญ
สำหรับการตรวจสอบโค้ดที่ซ้อนกันอย่างล้ำลึก ตัวอย่างเช่นที่ sub-languages (เช่น Linq ใน C # หรือ XPath ใน XSLT) อาจทำให้เกิดการซ้อนในระดับสูง
การเข้าถึง
ต้องมีการปรับขนาดและตัวเลือกสีเพื่อช่วยเหลือผู้พิการทางสายตาและเพื่อให้เหมาะสมกับสภาพแวดล้อมและความชอบส่วนตัว:
ความเข้ากันได้ของรหัสที่แก้ไขกับระบบอื่น ๆ
โซลูชันที่รวมตัวเลือก NestView ควรมีความสามารถในการลอกแท็บนำและอักขระช่องว่าง (ระบุว่ามีเพียงบทบาทการจัดรูปแบบ) จากโค้ดที่นำเข้า จากนั้นเมื่อถูกปล้นรหัสจะสามารถแสดงผลได้อย่างเรียบร้อยทั้งในมุมมองด้านซ้ายและด้านเยื้องที่ไม่มีการเปลี่ยนแปลง สำหรับผู้ใช้หลายคนที่ต้องพึ่งพาระบบเช่นการผสานและเครื่องมือต่าง ๆ ที่ไม่ได้คำนึงถึงช่องว่างสิ่งนี้จะเป็นข้อกังวลหลัก
งานอื่น ๆ :
การสร้างภาพมาร์กอัปที่ทับซ้อนกัน
งานวิจัยตีพิมพ์โดยเวนเดล Piezวันจากปี 2004 ที่อยู่ในประเด็นของการสร้างภาพของมาร์กอัปที่ทับซ้อนกันโดยเฉพาะที่LMNL ซึ่งรวมถึงกราฟิก SVG ที่มีความคล้ายคลึงกันอย่างมีนัยสำคัญกับข้อเสนอ NestView เช่นนี้จะได้รับการยอมรับที่นี่
ความแตกต่างของภาพมีความชัดเจนในภาพ (ด้านล่าง) ความแตกต่างที่สำคัญในการทำงานคือ NestView มีไว้สำหรับ XML หรือรหัสที่ซ้อนกันเท่านั้นในขณะที่กราฟิกของ Wendell Piez ได้รับการออกแบบมาเพื่อแสดงการซ้อนซ้อนกัน
กราฟิกข้างต้นได้รับการทำซ้ำโดยได้รับอนุญาตจาก http://www.piez.org
แหล่งที่มา: