필자는 동일한 XML 텍스트에 대해 두 가지보기 옵션을 제공 하는 XML 텍스트 편집기 를 작성했습니다 . 하나는 들여 쓰기 (가상), 다른 하나는 왼쪽 정렬입니다. 왼쪽 정렬보기의 동기는 XML 컨텍스트의 자동 부작용 인 들여 쓰기의 간섭없이 사용자가 일반 텍스트 또는 XPath 코드 들여 쓰기에 사용하는 공백 문자를 '볼'수 있도록 돕는 것입니다.
사용자를 도울 왼쪽 정렬 모드에 대한 시각적 단서 (편집기의 편집 불가능한 부분)를 제공하고 싶지만 너무 정교하지 않습니다.
나는 단지 연결선을 사용하려고 시도했지만 너무 바빴습니다. 지금까지 내가 찾은 최고의 내용은 아래 편집기의 조롱 된 스크린 샷에 나와 있지만 더 많은 코드가 필요없는 더 좋고 간단한 대안을 찾고 있습니다.
[편집하다]
히트 맵 아이디어를 취하면 (@jimp에서) 나는 이것과 3 가지 대안을 얻습니다-a, b 및 c :
다음 섹션에서는 여러 가지 답변과 의견의 아이디어를 모아 제안 된 답변을 제안으로 설명합니다. 이 질문은 이제 커뮤니티 위키이므로 언제든지 업데이트하십시오.
NestView
들여 쓰기를 사용하지 않고 중첩 코드의 가독성을 향상시키는 시각적 방법을 제공하는이 아이디어의 이름입니다.
등고선
NestView 내에서 다르게 음영 처리 된 선의 이름
위의 이미지는 XML 스 니펫을 시각화하는 데 사용되는 NestView를 보여줍니다. 이 그림에는 XML이 사용되지만 중첩을 사용하는 다른 코드 구문이이 그림에 사용될 수 있습니다.
개요 :
중첩 수준을 전달하기 위해 등고선이 음영 처리됩니다 (히트 맵에서와 같이).
등고선은 중첩 레벨이 열리거나 닫힐 때 표시되도록 기울어 져 있습니다.
등고선은 중첩 레벨의 시작을 해당 끝과 연결합니다.
등고선의 결합 된 너비는 히트 맵 외에 중첩 수준을 시각적으로 보여줍니다.
NestView의 너비는 수동으로 크기를 조정할 수 있지만 코드가 변경 될 때 변경되지 않아야합니다. 이를 유지하기 위해 등고선을 압축하거나 잘릴 수 있습니다.
빈 줄은 때때로 텍스트를 더 소화 가능한 청크로 나누기 위해 사용되는 코드입니다. 이러한 행은 NestView에서 특수한 동작을 트리거 할 수 있습니다. 예를 들어 히트 맵을 재설정하거나 배경색 등고선을 사용하거나 둘 다 사용할 수 있습니다.
현재 선택된 코드와 관련된 하나 이상의 등고선이 강조 표시 될 수 있습니다. 선택한 코드 수준과 관련된 등고선이 가장 강조되지만 중첩 된 그룹을 강조 표시하는 데 도움이되는 다른 등고선도 '점등'될 수 있습니다.
등고선의 클릭 / 두 번 클릭과 같은 다른 동작 (예 : 코드 접기 또는 코드 선택)이 연결될 수 있습니다.
등고선의 다른 부분 (선단, 중간 또는 후단)은 서로 다른 동적 동작을 가질 수 있습니다.
등고선 위의 마우스 호버 이벤트에서 툴팁을 표시 할 수 있습니다
코드가 편집되면 NestView가 계속 업데이트됩니다. 중첩이 균형이 맞지 않는 경우 중첩 수준을 끝내야하는 가정을 할 수 있지만 관련된 임시 등고선은 어떤 식 으로든 경고로 강조 표시되어야합니다.
등고선의 드래그 앤 드롭 동작을 지원할 수 있습니다. 끌고있는 등고선 부분에 따라 동작이 달라질 수 있습니다.
오류 및 변경 상태에 대한 줄 번호 매기기 및 색상 강조 표시와 같이 왼쪽 여백에 일반적으로있는 기능은 NestView를 오버레이 할 수 있습니다.
추가 기능
이 제안은 다양한 추가 문제를 해결합니다. 많은 문제가 원래 질문의 범위를 벗어나지 만 유용한 부작용입니다.
중첩 영역의 시작과 끝을 시각적으로 연결
등고선은 각 중첩 레벨의 시작과 끝을 연결합니다
현재 선택된 라인의 컨텍스트 강조
코드를 선택하면 NestView에서 관련 중첩 수준을 강조 표시 할 수 있습니다
동일한 중첩 수준에서 코드 영역 간 차별화
XML의 경우 다른 네임 스페이스에 대해 다른 색조를 사용할 수 있습니다. 프로그래밍 언어 (예 : c #)는 비슷한 방식으로 사용될 수있는 명명 된 영역을 지원합니다.
중첩 영역 내의 영역을 다른 시각적 블록으로 나누기
가독성을 높이기 위해 종종 코드에 여분의 줄이 삽입됩니다. 이러한 빈 선을 사용하여 NestView 등고선의 채도 수준을 재설정 할 수 있습니다.
다중 열 코드보기
들여 쓰기가없는 코드는 자동 줄 바꿈이나 가로 스크롤이 덜 필요하기 때문에 다중 열보기를보다 효과적으로 사용할 수 있습니다. 이보기에서 코드가 한 열의 맨 아래에 도달하면 다음 열로 흐릅니다.
단순히 시각 보조를 제공하는 것 이상의 사용
개요에서 제안으로, NestView는 수 TreeView 컨트롤에서 예상되는 것과 라인에 광범위하게 될 것이다 편집 및 선택 기능의 범위를 제공합니다. 주요 차이점은 일반적인 TreeView 노드에는 확장기와 노드 아이콘의 두 부분이 있다는 것입니다. NestView 등고선에는 오프너 (경사), 커넥터 (수직) 및 클로즈 (경사)의 3 가지 부품이 있습니다.
들여 쓰기
들여 쓰기되지 않은 코드와 함께 제공되는 NestView는 기존의 들여 쓰기 된 코드보기를 보완하지만 대체 할 가능성은 없습니다.
NestView를 채택한 솔루션은 공백 문자를 포함하여 코드 텍스트 자체에 영향을주지 않으면 서 들여 쓰기 및 들여 쓰기되지 않은 코드보기 사이를 매끄럽게 전환하는 방법을 제공 할 것입니다. 들여 쓰기 된보기의 한 가지 기술은 '가상 서식'입니다. 탭이나 공백 문자 대신 동적 왼쪽 여백이 사용됩니다. NestView를 동적으로 렌더링하는 데 사용 된 것과 동일한 중첩 수준 데이터는보다 일반적인 모양의 들여 쓰기보기에도 사용할 수 있습니다.
인쇄
인쇄 된 코드의 가독성을 위해서는 들여 쓰기가 중요합니다. 여기서 탭 / 공백 문자가없고 동적 왼쪽 여백이 있으면 텍스트가 오른쪽 여백에서 줄 바꿈되어 들여 쓰기 된보기의 무결성을 유지할 수 있습니다. 줄 번호는 코드가 줄 바꿈 된 위치와 정확한 들여 쓰기 위치를 나타내는 시각적 마커로 사용할 수 있습니다.
화면 부동산 : 평평한 들여 쓰기
NestView가 귀중한 화면 부동산을 사용하는지 여부에 대한 질문을 해결합니다.
등고선은 코드 편집기의 문자 너비와 동일한 너비로 잘 작동합니다. 따라서 12 자 너비의 NestView 너비는 등고선이 잘 리거나 압축되기 전에 12 단계 중첩을 수용 할 수 있습니다.
들여 쓰기 된보기가 각 중첩 레벨에 대해 3 개의 문자 너비를 사용하는 경우 중첩이 4 레벨의 중첩에 도달 할 때까지 공간이 절약됩니다.이 중첩 레벨 이후 평면보기에는 각 중첩 레벨에 따라 증가하는 공간 절약 이점이 있습니다.
참고 : 코드에는 최소 4 자 너비의 들여 쓰기를 권장하지만 종종 XML을 적게 관리하는 것이 좋습니다. 또한 가상 서식을 사용하면 정렬 문제의 위험이 없으므로 들여 쓰기를 줄일 수 있습니다.
두보기의 비교는 다음과 같습니다.
위의 관점에서 볼 때 뷰 스타일 선택은 화면 부동산 이외의 요소를 기반으로 할 것입니다. 한 가지 예외는 예를 들어 넷북 / 태블릿 또는 여러 코드 창이 열려있는 경우 화면 공간이 부족한 경우입니다. 이 경우 크기 조정이 가능한 NestView가 확실한 승자가 될 것입니다.
사용 사례
NestView가 유용한 옵션 일 수있는 실제 예제의 예 :
스크린 부동산이 프리미엄 인 곳
에이. 태블릿, 메모장 및 스마트 폰과 같은 장치
비. 웹 사이트에 코드를 표시 할 때
씨. 데스크탑에서 여러 코드 창이 동시에 표시되어야하는 경우
코드 내에서 텍스트의 일관된 공백 들여 쓰기가 우선 순위 인 경우
깊이 중첩 된 코드를 검토합니다. 예를 들어 하위 언어 (예 : C #의 Linq 또는 XSLT의 XPath)가 높은 수준의 중첩을 유발할 수 있습니다.
접근성
시각 장애가있는 사용자를 지원하고 환경 조건 및 개인 취향에 맞게 크기 조정 및 색상 옵션을 제공해야합니다.
다른 시스템과 편집 된 코드의 호환성
NestView 옵션을 통합 한 솔루션은 가져온 코드에서 선행 탭 및 공백 문자 (포맷 역할 만있는 것으로 식별)를 제거 할 수 있어야합니다. 그런 다음 일단 제거하면 코드가 왼쪽 정렬 및 들여 쓰기 된보기 모두에서 깔끔하게 렌더링 될 수 있습니다. 공백을 인식하지 않는 병합 및 diff 도구와 같은 시스템에 의존하는 많은 사용자의 경우 이것이 주요 관심사입니다 (완전한 쇼 스토퍼가 아닌 경우).
다른 작품들 :
겹치는 마크 업의 시각화
2004 년에 발표 된 Wendell Piez의 연구에 따르면 중복 마크 업, 특히 LMNL 의 시각화 문제가 해결 되었습니다 . 여기에는 NestView 제안과 상당히 유사한 SVG 그래픽이 포함되며 여기에서 인정됩니다.
시각적 차이는 이미지 (아래)에서 분명하지만, 주요 기능적 차이점은 NestView는 잘 중첩 된 XML 또는 코드 전용이며 Wendell Piez의 그래픽은 중첩 된 중첩을 나타내도록 설계되었다는 것입니다.
위의 그래픽은 http://www.piez.org 에서 친절한 허가를 받아 재생산되었습니다 .
출처 :