Làm thế nào một trình soạn thảo mã có thể gợi ý hiệu quả ở cấp độ lồng mã - mà không cần sử dụng thụt lề? [đóng cửa]


233

Tôi đã viết một trình soạn thảo văn bản XML cung cấp 2 tùy chọn xem cho cùng một văn bản XML, một tùy chỉnh thụt lề (hầu như), còn lại được chứng minh trái. Động lực cho chế độ xem bên trái là giúp người dùng 'nhìn thấy' các ký tự khoảng trắng mà họ đang sử dụng để thụt lề văn bản thuần hoặc mã XPath mà không bị can thiệp từ thụt lề là hiệu ứng phụ tự động của bối cảnh XML.

Tôi muốn cung cấp manh mối trực quan (trong phần không thể chỉnh sửa của trình chỉnh sửa) cho chế độ bên trái sẽ giúp người dùng, nhưng không quá phức tạp.

Tôi đã thử chỉ sử dụng các đường kết nối, nhưng điều đó dường như quá bận rộn. Điều tốt nhất tôi nghĩ ra cho đến nay được thể hiện trong một ảnh chụp màn hình của trình chỉnh sửa bên dưới, nhưng tôi đang tìm kiếm các lựa chọn thay thế tốt hơn / đơn giản hơn (không yêu cầu quá nhiều mã).

trình soạn thảo mã chỉ định mức lồng nhau

[Biên tập]

Lấy ý tưởng bản đồ nhiệt (từ: @jimp) Tôi nhận được điều này và 3 lựa chọn thay thế - được gắn nhãn a, b và c:

Ý tưởng ban đầu

Phần sau đây mô tả câu trả lời được chấp nhận là một đề xuất, tập hợp các ý tưởng từ một số câu trả lời và nhận xét khác. Vì câu hỏi này là wiki cộng đồng, xin vui lòng cập nhật nó.


NestView

Tên của ý tưởng này cung cấp một phương thức trực quan để cải thiện khả năng đọc mã lồng nhau mà không cần sử dụng thụt lề.

Đường Đồng mức

Tên cho các dòng được tô bóng khác nhau trong NestView

nhập mô tả hình ảnh ở đây

Hình ảnh trên cho thấy NestView được sử dụng để giúp trực quan hóa một đoạn mã XML. Mặc dù XML được sử dụng cho minh họa này, bất kỳ cú pháp mã nào khác sử dụng lồng nhau có thể đã được sử dụng cho minh họa này.

Một cái nhìn tổng quan:

  1. Các đường đồng mức được tô bóng (như trong bản đồ nhiệt) để chuyển mức lồng nhau

  2. Các đường đồng mức được đặt để hiển thị khi mức lồng nhau được mở hoặc đóng.

  3. Một đường đồng mức liên kết bắt đầu một mức lồng nhau đến cuối tương ứng.

  4. Độ rộng kết hợp của các đường đồng mức tạo ấn tượng thị giác về mức lồng nhau, ngoài bản đồ nhiệt.

  5. Độ rộng của NestView có thể thay đổi kích thước thủ công, nhưng không nên thay đổi khi mã thay đổi. Các đường đồng mức có thể được nén hoặc cắt bớt để tiếp tục đạt được điều này.

  6. Các dòng trống đôi khi được sử dụng mã để chia văn bản thành các phần dễ tiêu hóa hơn. Những dòng như vậy có thể kích hoạt hành vi đặc biệt trong NestView. Ví dụ, bản đồ nhiệt có thể được đặt lại hoặc một đường viền màu nền được sử dụng hoặc cả hai.

  7. Một hoặc nhiều đường đồng mức liên quan đến mã hiện được chọn có thể được tô sáng. Đường đồng mức được liên kết với mức mã được chọn sẽ được nhấn mạnh nhất, nhưng các đường đồng mức khác cũng có thể 'sáng lên' ngoài ra để giúp làm nổi bật nhóm lồng nhau có chứa

  8. Các hành vi khác nhau (chẳng hạn như gấp mã hoặc chọn mã) có thể được liên kết với nhấp / nhấp đúp vào Đường viền.

  9. Các phần khác nhau của một đường viền (cạnh đầu, giữa hoặc đuôi) có thể có các hành vi động khác nhau liên quan.

  10. Chú giải công cụ có thể được hiển thị trên một sự kiện di chuột qua đường viền

  11. NestView được cập nhật liên tục khi mã được chỉnh sửa. Trường hợp lồng không phải là các giả định cân bằng tốt có thể được thực hiện khi mức độ lồng phải kết thúc, nhưng các đường đồng mức tạm thời liên quan phải được làm nổi bật theo một cách nào đó như một cảnh báo.

  12. Hành vi kéo và thả của Đường viền có thể được hỗ trợ. Hành vi có thể thay đổi tùy theo phần đường viền được kéo.

  13. Các tính năng thường thấy ở lề trái như đánh số dòng và tô sáng màu cho các lỗi và trạng thái thay đổi có thể che phủ NestView.

Chức năng bổ sung

Đề xuất giải quyết một loạt các vấn đề bổ sung - nhiều vấn đề nằm ngoài phạm vi của câu hỏi ban đầu, nhưng là một tác dụng phụ hữu ích.

Trực quan liên kết bắt đầu và kết thúc của một khu vực lồng nhau

Các đường đồng mức kết nối điểm bắt đầu và kết thúc của từng cấp độ lồng nhau

Làm nổi bật bối cảnh của dòng hiện được chọn

Khi mã được chọn, mức lồng liên kết trong NestView có thể được tô sáng

Phân biệt giữa các vùng mã ở cùng mức lồng nhau

Trong trường hợp XML, các màu khác nhau có thể được sử dụng cho các không gian tên khác nhau. Các ngôn ngữ lập trình (như c #) hỗ trợ các vùng được đặt tên có thể được sử dụng theo cách tương tự.

Phân chia các khu vực trong một khu vực làm tổ thành các khối hình ảnh khác nhau

Các dòng bổ sung thường được chèn vào mã để hỗ trợ khả năng đọc. Các dòng trống như vậy có thể được sử dụng để đặt lại mức bão hòa của các đường đồng mức của NestView.

Chế độ xem mã nhiều cột

Mã không có thụt lề làm cho việc sử dụng chế độ xem nhiều cột hiệu quả hơn vì cuộn từ hoặc cuộn ngang ít có khả năng được yêu cầu. Theo quan điểm này, một khi mã đã chạm đến đáy của một cột, nó sẽ chảy vào cột tiếp theo:

nhập mô tả hình ảnh ở đây

Sử dụng ngoài việc chỉ cung cấp một trợ giúp trực quan

Như đã đề xuất trong tổng quan, NestView có thể cung cấp một loạt các tính năng chỉnh sửa và lựa chọn phù hợp với những gì được mong đợi từ điều khiển TreeView. Sự khác biệt chính là một nút TreeView điển hình có 2 phần: phần mở rộng và biểu tượng nút. Một đường đồng mức NestView có thể có tới 3 phần: phần mở (dốc), đầu nối (dọc) và đóng (dốc).


Vào thụt

NestView được trình bày cùng với các bổ sung mã không thụt lề, nhưng không thể thay thế, chế độ xem mã thụt lề thông thường.

Có vẻ như bất kỳ giải pháp nào áp dụng NestView, sẽ cung cấp một phương pháp để chuyển đổi liền mạch giữa các chế độ xem mã được thụt lề và không thụt lề mà không ảnh hưởng đến bất kỳ văn bản mã nào - bao gồm các ký tự khoảng trắng. Một kỹ thuật cho chế độ xem thụt lề sẽ là 'Định dạng ảo' - trong đó sử dụng lề trái động thay cho các ký tự tab hoặc dấu cách. Dữ liệu mức lồng nhau tương tự được sử dụng để hiển thị động NestView cũng có thể được sử dụng cho chế độ xem thụt lề trông thông thường hơn.

In ấn

Việc thụt lề sẽ rất quan trọng đối với khả năng đọc mã in. Ở đây, sự vắng mặt của các ký tự tab / dấu cách và lề trái động có nghĩa là văn bản có thể bao bọc ở lề phải và vẫn duy trì tính toàn vẹn của chế độ xem thụt lề. Số dòng có thể được sử dụng làm điểm đánh dấu trực quan cho biết nơi mã được bọc từ và cũng là vị trí chính xác của thụt lề:

nhập mô tả hình ảnh ở đây

Bất động sản màn hình: Flat Vs Indents

Giải quyết câu hỏi liệu NestView có sử dụng bất động sản màn hình có giá trị hay không:

Các đường đồng mức hoạt động tốt với chiều rộng giống như chiều rộng ký tự của trình soạn thảo mã. Do đó, chiều rộng của NestView là 12 ký tự có thể chứa 12 cấp độ lồng trước khi các đường đồng mức bị cắt / nén.

Nếu chế độ xem thụt lề sử dụng 3 chiều rộng ký tự cho mỗi cấp độ lồng thì không gian được lưu cho đến khi lồng đạt 4 cấp độ lồng, sau cấp độ lồng này, chế độ xem phẳng có lợi thế tiết kiệm không gian tăng theo từng cấp độ lồng.

Lưu ý: Việc thụt lề tối thiểu 4 độ rộng ký tự thường được đề xuất cho mã, tuy nhiên XML thường quản lý với ít hơn. Ngoài ra, Định dạng ảo cho phép sử dụng ít thụt lề hơn vì không có rủi ro về các vấn đề căn chỉnh

Một so sánh của 2 lượt xem được hiển thị dưới đây:

nhập mô tả hình ảnh ở đây

Dựa trên những điều trên, có lẽ công bằng khi kết luận rằng lựa chọn phong cách xem sẽ dựa trên các yếu tố khác ngoài màn hình bất động sản. Một ngoại lệ là không gian màn hình ở mức cao, ví dụ như trên Netbook / Tablet hoặc khi nhiều cửa sổ mã được mở. Trong những trường hợp này, NestView có thể thay đổi kích thước dường như là một người chiến thắng rõ ràng.

Trường hợp sử dụng

Ví dụ về các ví dụ trong thế giới thực nơi NestView có thể là một tùy chọn hữu ích:

  1. Bất động sản màn hình ở mức cao

    a. Trên các thiết bị như máy tính bảng, notepad và điện thoại thông minh

    b. Khi hiển thị mã trên các trang web

    c. Khi nhiều cửa sổ mã cần phải được hiển thị trên màn hình cùng một lúc

  2. Trong đó việc thụt lề khoảng trắng nhất quán của văn bản trong mã là ưu tiên

  3. Để xem xét mã lồng nhau sâu sắc. Ví dụ: nơi các ngôn ngữ phụ (ví dụ Linq trong C # hoặc XPath trong XSLT) có thể gây ra mức lồng nhau cao.

Khả năng tiếp cận

Tùy chọn thay đổi kích thước và màu sắc phải được cung cấp để hỗ trợ những người khiếm thị, và cũng phù hợp với điều kiện môi trường và sở thích cá nhân:

nhập mô tả hình ảnh ở đây

Khả năng tương thích của mã được chỉnh sửa với các hệ thống khác

Một giải pháp kết hợp tùy chọn NestView lý tưởng có khả năng tước bỏ các ký tự không gian và tab hàng đầu (được xác định là chỉ có vai trò định dạng) từ mã được nhập. Sau đó, một khi bị tước, mã có thể được hiển thị gọn gàng trong cả hai chế độ xem trái và thụt lề mà không thay đổi. Đối với nhiều người dùng dựa vào các hệ thống như hợp nhất và các công cụ tìm khác biệt không nhận biết được khoảng trắng, đây sẽ là một mối quan tâm lớn (nếu không phải là trình dừng hiển thị hoàn chỉnh).


Những công việc khác:

Hình dung của đánh dấu chồng chéo

Nghiên cứu được công bố bởi Wendell Piez , ngày từ năm 2004, đề cập đến vấn đề trực quan hóa đánh dấu chồng chéo, cụ thể là LMNL . Điều này bao gồm đồ họa SVG với sự tương đồng đáng kể với đề xuất NestView, do đó, chúng được thừa nhận ở đây.

Sự khác biệt về hình ảnh là rõ ràng trong các hình ảnh (bên dưới), sự khác biệt về chức năng chính là NestView chỉ dành cho XML hoặc mã được lồng ghép tốt, trong khi đồ họa của Wendell Piez được thiết kế để thể hiện lồng nhau chồng chéo.

nhập mô tả hình ảnh ở đây

Đồ họa ở trên đã được sao chép - với sự cho phép - từ http://www.piez.org

Nguồn:

  1. Hướng tới đánh dấu Hermennom
  2. Nửa bước về phía LMNL

6
Tôi không có câu trả lời thực sự cho bạn, chỉ là ý kiến. Nhìn vào ví dụ của bạn, B là lựa chọn ưa thích của tôi. Nó nổi bật với tôi bởi vì "bản đồ nhiệt" thực sự đi theo vết lõm thay vì phản chiếu nó như ví dụ đầu tiên và C làm. A cũng theo dõi thụt lề thực tế, nhưng B giống như những gì bạn sẽ thấy khi xml thực tế sẽ được thụt vào. Ví dụ thứ hai đơn giản là quá "chắc chắn" theo ý thích của tôi.
Marjan Venema

4
Tôi thích mã thụt lề bản thân mình. Không chắc chắn lợi ích của việc này sẽ là gì? Tôi có thiếu một cái gì đó rõ ràng? (Thực sự không có ý định này cho âm thanh tiêu cực.)
Chris

9
Tôi không thấy làm thế nào để chiếm một tỷ lệ lợi nhuận khổng lồ trên 100% các dòng là tốt hơn so với việc chỉ chiếm nhiều lợi nhuận như mỗi dòng cần.
John Gietzen

1
@ John Gietzen. Mục tiêu không phải là để tiết kiệm bất động sản màn hình (mặc dù điều này có thể là hiệu ứng trong nhiều trường hợp). Đó là cho phép kiểm soát chặt chẽ hơn các ký tự khoảng trắng khi điều đó quan trọng - chế độ xem thụt lề vẫn sẽ được cung cấp (nhưng ảo, không sử dụng ký tự đệm).
pgfearo

3
Tôi đang bỏ phiếu để đóng câu hỏi này ngoài chủ đề vì đó là câu hỏi UX nhưng quá cũ để di chuyển.
ratchet freak

Câu trả lời:


104

Tôi đã cố gắng trả lời câu hỏi của riêng mình ở đây, nhưng điều này được kết hợp với ý tưởng bản đồ nhiệt từ @jimp và cũng là ý tưởng 'biến nó thành XML-ish' từ @Andrea:

nhập mô tả hình ảnh ở đây

Hy vọng rằng, màu sắc trong bản đồ nhiệt cùng với các đường góc giúp thu hút mắt giữa các thẻ bắt đầu và kết thúc; loại bỏ các dải phân cách ngang giúp cải thiện 'dòng chảy' từ đầu đến cuối. Khi người dùng chọn với một yếu tố, phần phù hợp trong bản đồ nhiệt có thể được làm nổi bật theo một cách nào đó - có lẽ với đường viền phát sáng (như được hiển thị).

Chỉnh sửa Đã quyết định đi với điều này, có lẽ sẽ phải có tùy chọn người dùng cho màu sắc. Ảnh chụp màn hình 'sẵn sàng sản xuất':

nhập mô tả hình ảnh ở đây

Và để so sánh ... khung nhìn thụt lề thay thế:

nhập mô tả hình ảnh ở đây

Chỉnh sửa ngay, đối với trường hợp lồng nhiều hơn - kiểm tra kỹ năng vẽ của tôi ...

nhập mô tả hình ảnh ở đây


1
No trông tuyệt ! Làm tốt lắm. Nhưng nó sẽ trông như thế nào khi có nhiều vết lõm?
Loïc Lopes

1
@Louhike Cảm ơn! Có, nó đạt tối đa ở 4 cấp độ và tôi không muốn kéo dài lề trái thêm nữa - vì vậy tôi sẽ nén chiều rộng của các thanh dọc ngày càng tăng ở các mức lồng cao hơn - hy vọng giống như một bản đồ đường viền.
pgfearo

2
@Louhike. Tôi đã thêm một hình ảnh bổ sung để cho thấy mọi thứ có thể trông như thế nào với 9 cấp độ lồng nhau - sau khoảng 15 cấp độ, có thể cần phải hợp nhất các thanh giữa, có lẽ bằng cách sử dụng tô màu gradient.
pgfearo

10
Điều này chỉ đơn giản là tuyệt vời. +1 để đưa chỉnh sửa mã và giao diện người dùng lên cấp độ tiếp theo. Ai đó có tài khoản nên đăng tin này lên Hacker News, /.hoặc r / lập trình.
Konrad Rudolph

2
Tự hỏi nó sẽ trông như thế nào với thanh bên được lật theo chiều ngang ... imgur.com/u5mNi
chanux

24

Một ý tưởng có thể là thử và thêm 3D vào văn bản. Tăng / giảm kích thước phông chữ dựa trên mức độ của nó.

Ví dụ: mã này:

nhập mô tả hình ảnh ở đây

Sẽ như thế này:

nhập mô tả hình ảnh ở đây

Điều đó có thể gây khó chịu khi làm việc vì nó mất liên kết kích thước văn bản cố định ở các cấp độ khác nhau. Một ý tưởng khác; thay đổi độ bão hòa của từng cấp độ:

nhập mô tả hình ảnh ở đây

Làm thế nào tốt mà giữ cho một cái gì đó thực sự sâu sắc? Không chắc...

Tôi thực sự thích ý tưởng hình ảnh máng xối của bạn rất nhiều; Thật dễ dàng để nhóm các thứ lại với nhau. Có thể kết hợp với một trong những ý tưởng này, nó sẽ thậm chí còn tốt hơn, hoặc nhiều crappier hơn. ;)


Một lát sau tôi đã thực hiện một phạm vi hiển thị bản đồ nhiệt trong C. Có thể rất vui khi xem xét để động não:

nhập mô tả hình ảnh ở đây

Căn lề trái:

nhập mô tả hình ảnh ở đây


2
Thật hấp dẫn để làm một cái gì đó với văn bản, nhưng điều này rất khó để làm mà không làm nhà phát triển mất tập trung trong khi họ gõ hoặc chỉ sau đó. Các thay đổi ảnh hưởng đến chiều cao phông chữ gây ra sự cố - có thể chúng tôi chấp nhận thấy mã của chúng tôi tăng và giảm thậm chí ít hơn so với bên này. Tôi thích ý tưởng của bạn về việc tô mã, nhưng điều này sẽ phải thật tinh tế khi tôi muốn thử và giữ mọi thứ trông không bị lộn xộn.
pgfearo

2
nhưng điều này sẽ rất tốt cho môi trường giảng dạy!
jcolebrand

Gợi ý kích thước phông chữ rất hấp dẫn - tôi có thể thấy nhược điểm của nó. Tại sao không làm cho phông chữ nhỏ hơn vì phạm vi được lồng sâu hơn - điều này sẽ giúp ngăn chặn việc làm tổ sâu (mặc dù nó gây ra vấn đề trong đó việc làm tổ sâu thực sự là một giải pháp hợp lý)
Peter

2
bản đồ nhiệt thực sự tốt hơn nhiều trong việc hiển thị phạm vi so với trực quan hóa phạm vi căn lề trái (giải pháp của @ pfgearo)
Sandeep

@Seepeep. Tôi đồng ý rằng trong nhiều trường hợp, đây là một giải pháp tốt hơn - đặc biệt là khi xem lại mã thay vì chỉnh sửa nó. Các ràng buộc kỹ thuật (như được giải thích trong câu hỏi) khiến tôi khó sửa đổi màu nền bằng điều khiển hiện tại tôi đang sử dụng. Thực tế, tôi đã sử dụng phía bên trái của bản đồ nhiệt trong câu trả lời này - nhưng với các cạnh nghiêng về phía khu vực được chỉnh sửa để giúp thu hút mắt. Một vấn đề với nền văn bản màu là khả năng đọc / độ tương phản bị mất ở mức cao hơn mức độ làm tổ.
pgfearo

21

Chỉ cần điều chỉnh ý tưởng ban đầu của bạn và chuyển từ hình vuông sang viên nang. Tôi nghĩ các phiên bản này (bao gồm cả phiên bản gốc của bạn) dễ đọc hơn vì chúng ít phức tạp hơn phiên bản hiển thị lồng nhau thông qua việc lồng các phần tử hiển thị. Tôi nghĩ rằng các yếu tố cây truyền đạt thông tin theo cách đơn giản hơn trực quan hơn.

viên nang

Tôi nghĩ rằng bên trái là tuyệt vời để hiển thị trực tiếp thụt lề, trong khi bên phải là tốt hơn để truyền đạt một mối quan hệ lồng nhau.


2
Tôi thích sự mềm mại của viên nang của bạn, tuy nhiên chúng dường như quá tách rời khỏi văn bản, tôi cần một cái gì đó gắn kết hơn và cho một cái nhìn rõ ràng hơn về những phần chứa trong đó.
pgfearo

9

Ý kiến ​​của tôi:

Việc làm tổ trông giống như làm tổ hơn. Chiều rộng ngang của mỗi lớp không cần quá rộng.


Tôi nghĩ những gì bạn đề xuất về cơ bản giống như câu trả lời (lấy cảm hứng từ người khác) tôi đã đưa ra nhưng không có các đường dốc. Tôi nghĩ rằng các đường dốc giúp vẽ mắt giữa mở và đóng tốt hơn. Chiều rộng không phải là vấn đề thực sự bởi vì (như được hiển thị trong hình ảnh 9 cấp), chiều rộng của đường thẳng đứng không phụ thuộc vào chiều rộng của đường dốc, do đó các đường thẳng đứng có thể được nén.
pgfearo

Vâng, pg- Tôi nhận thấy rằng sau khi tôi đăng. Chúng giống hệt nhau về mặt địa hình - để có được sự ưa thích về nó. Tôi cho rằng đó là vấn đề sở thích, nhưng phiên bản của tôi chỉ nói "làm tổ" với tôi theo cách mà phiên bản của bạn không có. Có lẽ tính năng này có thể thể thao cả hai và cho phép người dùng lựa chọn.
broc7

8

Tôi thích ý tưởng. Đề nghị của tôi để giảm "bận rộn" sẽ là sử dụng độ dốc thay vì hình vuông. Nó sẽ cắt giảm trên dòng. Có lẽ màu sắc khác nhau cho thụt đầu cực.

Tôi sẽ nói tất cả mọi thứ bạn có là tuyệt vời, mặc dù một chút khối cho thị hiếu của tôi.

Nhận xét của tôi: Tôi đã liên tục vật lộn với cách mà Visual Studio IDE thực hiện thụt lề. Tôi rất thích sử dụng một cái gì đó như thế này hoặc một biến thể.

Vì vậy, hãy tưởng tượng liên kết đó không có các dòng và nội tuyến với xml / code hiện tại của bạn.


Vâng, những ý tưởng vẫn đang phát triển. Các hình ảnh trong câu trả lời tôi đã gửi (chứ không phải câu hỏi của tôi) ít bị chặn hơn bởi vì chúng có độ dốc hàng đầu / dấu, tôi đang xem xét sử dụng độ dốc (nhưng hơi khác một chút) cũng để giảm bớt mọi thứ. Tôi với bạn về các màu sắc khác nhau, để thụt lề cao, nhưng cũng để làm nổi bật những thứ như nhận xét hoặc lỗi. Và sau đó là phần tô sáng động, để hiển thị bối cảnh / gỡ lỗi hiện tại ... khó khăn sẽ là khi phán đoán khi nào nên dừng lại.
pgfearo

5

Vì bạn đã nói rằng trực quan hóa phải tồn tại ở lề không thể chỉnh sửa (trái?), Tôi tin rằng điều đó có nghĩa là trực quan hóa không thể được xen kẽ hoặc đằng sau mã.

Có lẽ một bản đồ nhiệt ở cột bên trái, với màu sáng hơn cho thấy vết lõm sâu hơn? Làm cho lề có kích thước cố định, với một hình ảnh trực quan giống như những gì bạn có (mong đợi từ trái sang phải như thụt đầu dòng) sử dụng động tất cả không gian được cung cấp theo độ thụt tối đa được xác định theo độ sâu DOM.

Nếu bạn sẵn sàng phân nhánh vào khu vực biên tập, tôi sẽ đề xuất một cái gì đó rất giống nhau, nhưng làm nền của tài liệu. Khu vực bóng mờ sẽ là nơi khoảng trắng sẽ được đặt nếu thụt lề được bật. Trong trường hợp này, tôi sẽ sử dụng một màu sáng, rắn tương phản với tô sáng văn bản.


@jimp Vâng, trực quan hóa không thể có hoặc đằng sau mã - nhiều như tôi muốn thử, nền tảng / kỹ năng mã hóa của tôi sẽ làm cho việc này quá phức tạp. Bản thân màu nền trong trình chỉnh sửa lại khó khăn, nhưng điều đó cho tôi ý tưởng rằng tôi có thể thử các tông màu nền trước khác nhau. Tôi sẽ thử một thanh từ trái sang phải và bản đồ nhiệt như bạn đề xuất.
pgfearo

+1 cho ý tưởng bản đồ nhiệt (Y) .. và tôi có thể đề xuất mức lồng nhau bên trong màu sắc cho những người có nhu cầu đặc biệt về thị giác (như mù màu).
M.Sameer

@thanh thanh. Đã cập nhật câu hỏi của tôi để minh họa ý tưởng bản đồ nhiệt của bạn, điều mà tôi thích, nhưng tôi nghĩ rằng tôi đã hiểu sai từ trái sang phải ...
pgfearo

@pgfearo Tôi rất vui vì ý tưởng của mình rất hữu ích! Dựa trên những gì tôi thấy bạn đã làm, tôi nghĩ rằng tôi thích L & F từ phải sang trái tốt hơn. Tôi xin lỗi tôi đã không có cơ hội kiểm tra lại trước đây (cuối tuần bận rộn). Vì bạn đã đạt được nhiều tiến bộ, tôi sẽ chỉ nhận xét về câu trả lời bạn đã đăng ở trên.
dong dỏng

@pgfearo Rất tiếc, tôi không đủ uy tín để nhận xét về câu trả lời của bạn! Tôi sẽ đăng một số suy nghĩ về câu trả lời của bạn một khi tôi có được đặc quyền đó, hy vọng sẽ sớm thôi!
dong dỏng

3

jGRASP thực hiện điều này bằng cách sử dụng điểm đánh dấu trực quan ở lề:

nhập mô tả hình ảnh ở đây

Nó thậm chí còn nhận ra khi bạn đang sử dụng một vòng lặp và sử dụng một loại đường khác để thể hiện vòng lặp bên trong đó.

Chỉ cần nghĩ rằng tôi sẽ chỉ ra làm thế nào một biên tập viên hiện có làm điều đó.


5
Theo tôi thì quá ồn ào nhưng vẫn là một ý kiến ​​hay.
Konrad Rudolph

Tôi đã xem xét điều này và tài liệu trang web ngụ ý rằng ảnh chụp màn hình là từ trình xem mã, sơ đồ chứ không phải trình chỉnh sửa mã. Ngoài ra, được cho là không có ký tự đệm nhưng nó vẫn là một khung nhìn thụt lề. Tôi đang tìm kiếm các giải pháp đơn giản không yêu cầu thụt mã, vì các lý do được nêu trong câu hỏi. Điều đó nói rằng, JGrasp trông giống như một công cụ tuyệt vời để cải thiện tính dễ hiểu của mã.
pgfearo

JGrasp được cho là một trình soạn thảo mã ở trường tôi, chúng tôi đã sử dụng nó trong phần giới thiệu về lớp khoa học máy tính, đó là trình soạn thảo mã được đề xuất. Nó có các công cụ để giúp biên dịch và chạy chương trình của bạn, nhưng nó không lạ mắt như Eclipse hay Netbeans. Nhưng nó hơi khác với những gì bạn mô tả là mục đích không thực sự chung của nó và chỉ thực sự nhận thức được cú pháp của java.
tro

3

Một ý tưởng không tồi nhưng phải tham chiếu lề trái để thấy rõ các khối của tôi có thể hơi khó chịu. Điều đó thậm chí không nghĩ về bất động sản màn hình hoặc mọi thứ có thể bắt đầu trông như thế nào nếu cấu trúc trở nên rất sâu.

Vì động lực là để giúp người dùng 'nhìn thấy' các ký tự khoảng trắng mà họ đang sử dụng để thụt lề, bạn chỉ có thể hiển thị cho họ các ký tự khoảng trắng.

Tôi không nói các nhân vật trực quan đặc biệt như đánh dấu đoạn văn, chỉ nổi bật. Dấu cách màu vàng, tab màu xanh lá cây (hoặc bất cứ điều gì)

Đối với vấn đề lề / lồng, bạn chỉ có thể di chuyển lề cho mỗi khối. Không có gì nói rằng lề phải là một đường thẳng.

Tôi chắc chắn đây không phải là một ý tưởng mới.

Một cái gì đó như thế này:

xml mẫu hiển thị lề trái di chuyển và khoảng trắng được tô sáng


Với quan điểm thụt lề, kế hoạch là làm sáng lên khoảng trắng một cách linh hoạt, tương tự như ý tưởng của bạn. Ngoài ra, hãy nhớ rằng trong chế độ xem phẳng, 30 cấp độ lồng nhau chiếm không gian giống như 1 cấp độ, được thụt lề, nó sẽ nằm ngoài rìa màn hình của bạn, đó là một lý do khiến các nhà phát triển được lựa chọn chế độ xem.
pgfearo

1
Đúng là lý do tại sao tôi nói đó không phải là một ý tưởng mới. Tuy nhiên, nếu mức độ thụt lề là logarit hoặc động dựa trên cấp độ tôi hiện đang chỉnh sửa, bạn sẽ không gặp phải vấn đề gì. Ngay cả khi nó chỉ được cố định đơn giản tại 1 khoảng trắng, nó sẽ không tắt khỏi màn hình. Bạn thậm chí sẽ không đi được một nửa so với màn hình 80 ký tự cũ. Có với một số trong những ý tưởng này, 30 cấp độ có cùng không gian với 1 cấp độ, nhưng khi bạn nhìn vào một số trong số này, không có khoảng trống nào chỉ thụt vào, chúng chỉ thụt toàn bộ và thêm một số đồ họa lạ mắt.
Justin Ohms

Ồ Bây giờ có một phần trên màn hình bất động sản trong câu hỏi (đây là một wiki cộng đồng và tất cả), điều này bao gồm một so sánh ảnh chụp màn hình. Nếu bạn có thể cập nhật phần này với những quan sát của riêng bạn thì sẽ rất tuyệt. Vui lòng chấp nhận rằng tôi là một fan hâm mộ lớn của các chế độ xem thụt lề (hoạt động trong thế giới XML và tất cả), đó là lý do tại sao tôi đã dành 6 tháng trở lên để hoàn thiện kỹ thuật định dạng ảo trong đó hệ thống thụt lề được quản lý. Nếu có một điều tôi đã học được, thì đó là các nhà phát triển thích một sự lựa chọn - do đó, chế độ xem phẳng.
pgfearo

Trong lần đọc đầu tiên, tôi đã bỏ lỡ ý tưởng của bạn về chiều rộng thụt lề động - đây có thể là một tính năng mạnh mẽ. Nó làm tăng khả năng ngay cả khi có một số mã được thụt vào trong khi phần còn lại bằng phẳng, không chắc nó sẽ hoạt động như thế nào trong thực tế nhưng nó dễ dàng được kiểm tra - với dự án của tôi, logic thụt lề vẫn được gọi ngay cả đối với chế độ xem phẳng, chỉ là hệ số nhân được đặt thành 0. Vì vậy, chỉ cần hệ số nhân này cần điều chỉnh. Cuộc gọi tốt.
pgfearo

2

Tại sao không mở và đóng ngoặc?

  1. Sự thụt lề có nghĩa là ngăn chặn: (và) có nghĩa chính xác điều đó đối với các lập trình viên.
  2. (và) mỗi ký tự là một thanh duy nhất: thanh bên trái sẽ rất mỏng.
  3. Các phần tử rỗng dễ dàng được phát hiện: use () trên cùng một dòng.
  4. Nội dung của một yếu tố không cần một đầu mối trực quan: một khoảng trống tốt hơn nhiều.
  5. Vị trí con trỏ ở bên phải có thể được khớp với khối chứa bên trái: tự động thêm một màu vào các ký tự trong cột bằng (và)
  6. Bạn có thể làm cho nó nhiều XML hơn bằng cách sử dụng <và>, trông từ xa sẽ tốt hơn.

Một số ý tưởng hữu ích - sẽ thử kết hợp chúng, đặc biệt là bit XML-ish. Ngoài ra, có một chút gì đó diễn ra linh hoạt, và tôi có thể có thể thêm một số nữa - mà không quá hống hách.
pgfearo

2

Vim có thể làm một cái gì đó tương tự đã có, mặc dù không hoàn toàn đẹp.

Có nhiều cách khác nhau để thực hiện "gấp mã" trong Vim. Một trong số đó dựa trên một quy tắc gấp cú pháp. Khi điều này được thực hiện, mã có thể được gấp lại bằng cách sử dụng cấu trúc phác thảo lồng nhau và "FoldColumn" có thể được sử dụng để đưa ra một biểu đồ (thực sự là "dựa trên ký tự" với biểu tượng '|' và '-') của "Foldlevel" .

Các nếp gấp có thể đưa ra biểu diễn lồng nhau bất kể Foldmethod, nhưng phương thức dựa trên cú pháp là phương thức có thể phù hợp với những gì bạn muốn. Tôi không chắc chắn nếu có các quy tắc gấp dựa trên cú pháp được tạo sẵn ngoài kia cho xml ở đâu đó, tôi đoán có thể có.


Trình chỉnh sửa mà tôi thiết kế sẽ được tích hợp vào một hệ thống lớn hơn nhiều với GUI trong đó Vim hoặc bất kỳ công cụ của bên thứ 3 nào không được xem xét, vì lý do kỹ thuật và cấp phép. Tuy nhiên, tôi quan tâm đến cách Vim giải quyết vấn đề này nên sẽ điều tra - hy vọng họ có ảnh chụp màn hình trong tài liệu. Vâng, đồ họa dựa trên nhân vật có thể hoạt động ở một mức độ - tôi đã chế giễu một nghiên cứu. Việc gấp mã có thể được thực hiện từ lề trái, nhưng cũng có thể cung cấp chế độ xem dạng cây phác thảo được đồng bộ hóa.
pgfearo

@pgfearo: Bạn có thể xem giao thức NetBeans của Vim. Nó có nghĩa là được sử dụng để nhúng Vim vào trong IDE, mà không có bất kỳ vấn đề cấp phép nào.
greyfade

@greyfade - Tôi sợ có vấn đề về cấp phép, với dự án hiện tại của tôi, vì nguồn đóng của nó và tôi sẽ cần sự ổn định (ngay cả khi tôi không sử dụng nó) để sửa đổi nguồn Vim mà không cần lo ngại về GPL. Điều đó sang một bên, giao thức có vẻ thú vị.
pgfearo

1

Tôi nghĩ rằng bạn đang đi đúng hướng với tùy chọn B và C: bao gồm cả chiều rộng và màu bản đồ nhiệt. Tôi thích tùy chọn B hơn C vào lúc này, vì nó ít xâm phạm hơn (rộng và loãng, hoặc hẹp và dữ dội, thay vì khối rất nặng ở giữa C) Một nhược điểm là với tùy chọn đó bạn phải xây dựng lại toàn bộ biểu đồ nếu bạn chèn một mức ở đâu đó. Tôi nghĩ bạn có thể làm cho các khối nhỏ hơn nhiều, 1 hoặc 2 px có lẽ là đủ. Nó không phải là nhiều, nó chỉ cần được phân biệt. Đặc biệt là khi mọi người dự kiến ​​sẽ sử dụng trình chỉnh sửa nhiều lần, các hiệu ứng không phô trương, tinh tế hơn sẽ dễ làm việc hơn vì chúng không làm sao lãng nhiều.

Một điều quan trọng khi sử dụng một trình soạn thảo sắp xếp là làm nổi bật phạm vi hiện tại: khi chọn một dòng trong trình chỉnh sửa, bạn cần xem chính xác nó chứa những yếu tố nào và nơi nó dừng lại. Bạn thậm chí có thể làm nổi bật cây lên (những yếu tố nào là con của). Tôi nghĩ đó là một vấn đề riêng biệt cần giải quyết và suy nghĩ và sẽ có ảnh hưởng nhiều hơn đến cách người dùng đánh giá trải nghiệm của họ với biên tập viên.


Bây giờ tôi đã gửi một câu trả lời mà tôi nghĩ đã vượt qua với bạn nhưng trùng hợp ngẫu nhiên trong ý tưởng của bạn về việc làm nổi bật phạm vi hiện tại (với đường viền phát sáng)?. Tôi đồng ý rằng các khối nên ít gây khó chịu hơn, các hiệu ứng được phóng đại ở đây để giúp với bản vẽ của tôi và vì vậy chúng hiển thị ok trên ảnh chụp màn hình thu nhỏ.
pgfearo

1

Một điều tôi chưa từng thấy được đề cập là những gì bạn có thể làm với màu sắc trên đỉnh của hiệu ứng bão hòa mà bạn dường như đã giải quyết. Đề nghị của tôi là thay đổi màu của tổ trong đó con trỏ nằm. Điều này sẽ giúp người dùng dễ dàng phân biệt dòng nào là một phần của tổ, so với anh chị em với nó trên đường đi.

Khi thực hiện các công cụ dựa trên màu sắc, vui lòng lưu ý về mù màu và chọn các màu có thể phân biệt được trên toàn cầu hoặc cung cấp một vài tùy chọn để mọi người chọn.


Điểm nổi bật này, tôi nghĩ rằng vẫn còn nhiều điều có thể được thực hiện để thêm chi tiết vào việc thực hiện mẫu này. Có, tôi cảm thấy thoải mái hơn khi sử dụng tông màu để tránh các vấn đề về nhận thức màu sắc, nhưng được cung cấp tùy chọn có sẵn, tôi đồng ý rằng nó sẽ giúp thêm một chiều. Vì câu hỏi này hiện là wiki cộng đồng, tôi sẽ thử gửi một khung dây để xem những người khác có muốn đóng góp hình ảnh là các biến thể của chủ đề hay không - tùy chọn có thể sẽ khác nhau giữa các lớp sử dụng, cú pháp ngôn ngữ và ngữ cảnh động khác nhau.
pgfearo

0

Một tùy chọn, có thể được sử dụng cùng với các đề xuất khác cho đến nay, sẽ là sử dụng một chú giải công cụ ở lề trái hiển thị đường dẫn đến dòng bằng ký hiệu XPath. Các công cụ "kiểm tra phần tử" của trình duyệt (ví dụ: Fireorms, một công cụ tích hợp trong Chrome) thường làm một cái gì đó tương tự nhưng trong một thanh trạng thái.


Tôi chỉ tập trung vào điều khiển này, nhưng 'Thanh vị trí XPath' với bộ điều hướng 'Breadcrumb' hoạt động và được tích hợp vào trình chỉnh sửa, như là một chế độ xem dạng cây được đồng bộ hóa.
pgfearo

0

Có thể bạn có thể có chế độ xem được thu gọn cho bản đồ nhiệt (từ bài đăng gốc) chỉ với một cột màu và số độ sâu. Điều này sẽ cho phép họ biết mức độ sâu sắc của họ và cung cấp cho họ nhiều bất động sản màn hình hơn cho xml. Có vẻ như một chiến thắng giành chiến thắng với tôi.

Tôi lo ngại liệu sẽ có đủ sự khác biệt về màu sắc để làm mọi thứ sâu sắc.


Hỗ trợ cho mức độ cao của lồng là ưu tiên. Nhưng, chỉ có rất nhiều mắt cần nhìn (và có thể nhìn vào) bất cứ lúc nào, vì vậy vượt quá một mức độ nhất định, tôi đang xem xét pha trộn các màu với nhau, để tạo ấn tượng về chiều sâu và chỉ làm nổi bật các mức chính. Vì vậy, tôi sẽ kiểm tra ý tưởng của bạn khi mức độ lồng cao.
pgfearo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.