문제

다른 소스 코드 요소가 다른 색상으로 표시되는 구문 색칠에 미쳤습니다. 요즘에는 코드를 읽을 수있는 능력에있어서 적절한 계약으로 좋은 색칠 공부가 바로 거기에 있습니다.

아래를 살펴 봅니다 Tools/Customize/Fonts and Colors, 나는 어떤 경우에는 세분화가 미세한 것을 볼 수 있습니다. 예를 들어 현에 다른 색상을 줄 수 있습니다.

그러나 다음은 일반적인 C# 코드 라인입니다.

Controls.Add(combo);

지금 Controls, Add, and combo 모두 다른 종류의 것들이지만, 모두 '식별자'이기 때문에 모두 같은 색상으로 렌더링됩니다.

분명히 그것보다 더 세분화 할 수있는 방법이 있습니까? 적어도 객체와 다르게 색상 방법?

도움이 되었습니까?

해결책

몇 가지 생각.

첫째, 기능은 기본적으로 "구현되지"않습니다. 기능을 구현하려면 누군가 가이 기능을 생각해야합니다. 그런 다음 디자인하고, 지정하고, 구현하고, 테스트하고, 문서화하고, 운송 차량을 찾은 다음 문 밖으로 나가야합니다. 그 중 하나가 발생하지 않으면 기능을 얻지 못합니다. 내가 아는 한,이 기능에 대해서는 이런 일이 없었습니다.

둘째, 기능은 순 이점, 즉 고객에게 총 이익을 기준으로 우선 순위가 결정됩니다. 여기에는 매우 실제 "기회 비용"이 있습니다. 우리가 구현하는 모든 기능은 예산이없는 수십 가지 기능입니다. 따라서 기능은 작업을 수행 할 가치가 있어야 할뿐만 아니라 기능 요청 목록에있는 수천 가지 기능보다 더 유익해야합니다. 그것은 달성하기에 높은 막대입니다. 대부분의 기능은 결코 달성하지 못합니다.

세 번째 요점을 설명하려면 언어가 어떻게 처리되는지에 대해 조금 알아야합니다. 우리는 소스 코드를 가져 와서 "토큰"에 "렉싱" - 단어로 시작합니다. 이 시점에서 우리는 모든 캐릭터가 숫자, 문자열, 키워드, 식별자, 댓글, 전처리 서자 지침 등의 일부인지 알고 있습니다. 렉싱은 엄청나게 빠릅니다; KeyStrokes 사이에 파일을 쉽게 다시 실행할 수 있습니다.

그런 다음 일련의 토큰을 가져 와서 "추상 구문 트리"로 "구문 분석"합니다. 이것은 코드의 어떤 부분이 클래스, 표현식, 로컬 변수 선언, 이름, 과제 등의 부분을 결정합니다. 구문 분석도 빠르지 만 Lexing만큼 빠르지는 않습니다. 우리는 누군가가 실제로 누군가가 실제로 볼 때까지 방법 본문을 건너 뛰는 것과 같은 몇 가지 트릭을 수행합니다.

마지막으로, 우리는 추상 구문 트리를 취하고 시맨틱 분석을 수행합니다. 이것은 주어진 이름이 유형, 로컬 변수, 네임 스페이스, 메소드 그룹, 필드 등을 지칭하는지 여부를 결정합니다. 우리는 프로그램의 유형 계층 구조를 결정하기 위해 "최상위"시맨틱 분석을 수행하고 "메소드 레벨"시맨틱 분석을 수행하여 모든 방법의 모든 표현식 유형을 결정합니다. "최상위"시맨틱 분석은 매우 빠르며 개별 방법 분석은 매우 빠르지 만 키스트로크 간의 완전한 의미 분석을 수행하기는 어렵습니다.

분명히 우리는 Intellisense에 대한 완전한 의미 분석을 수행해야하지만 현재 입력하는 방법을 파악하고 최상위 수준과 그 방법에 대한 의미 론적 분석 만 수행 할 수 있습니다.

그러나 색상화는 전체 파일에서 작동해야합니다. 커서가 지금 발생하는 방법을 채색 할 수는 없습니다. 따라서 색상화는 미친 듯이 빠르야하므로 역사적으로 우리는 대부분 어휘 정보를 기반으로 색상을 입었습니다.

때때로 우리는 "이것은 아마도 유형일까요?"와 같은 특별한 것들을 알아낼 수 있습니다. 다른 색상을 제공합니다. 그러나 주어진 엔티티가 방법 그룹과 예를 들어, 대의원 유형의 필드 인 경우, 현재 모든 키 스트로크에서 수행하지 않는 수준 인 매우 풍부한 시맨틱 분석이 필요합니다.

이제 여기서 우리가 할 수있는 일이 있습니다. 우리는 토큰 스트림에 대한 편집을 이해하는 것에 대해 더 똑똑 할 수 있으며 트리의 편집 된 부분에 대한 문법 및 의미 분석 만 재현 할 수 있습니다. 우리는 지금이 분야에 대한 연구를하고 있지만 단지 연구 일뿐입니다. 실제로 제품으로 만들지 않을 수도 있습니다.

다른 팁

Resharper 플러그인은 당신이 말하는 것처럼 향상된 구문 강조 표시를 제공한다고 생각합니다. 단순히 내가 사용하는 것과 동일한 비용 (저렴한 비용)을 제공하는 다른 플러그인도있을 수 있습니다. 구문 강조 표시가 매우 유용하다는 데 동의합니다. Resharper는 또한 Gray Out Dead Code와 같은 멋진 일을하여 더 명확하게 만들고 현재 선을 강조 표시합니다.

-다니엘

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top