코딩을 하다 보면 불편하지만 참고 넘어가는 경우가 있는데, 늘 바쁜 개발자가 차분히 환경을 개선할 만한 여유가 쉽게 나지 않는다. 비주얼 스튜디오를 쓰면서 필자를 아주 오랫동안 성가시게 했던것 중 하나가 바로 문서 탭(Document well)이다. 도대체 머저리 같은 MS 녀석들이 무슨 생각으로 탭 순서를 멋대로 헝클어 버리는지 이해할 수 없다. 그냥 최근 열람한 탭을 앞에 두는게 그들이 할 수 있는 최선인가보다. 얼마전 탭바를 스크롤할 수 있게 해준다는 설명을 읽고는 Productivity Power Tools 익스텐션을 설치했는데, 휠버튼으로 동작하는게 아니라 탭바의 양 끝에 쥐똥만한 버튼을 달아놓은게 전부였다. 댐잇... 


하지만, VS를 쓸 때 마다 늘 Xcode나 이클립스를 갈구하게 했던 불편한 점이 몇 개 해소됐다. 이 녀석은 탭을 사전순으로 소트해준다. 최근 열람한 탭을 제일 앞으로 가져와 탭바를 헝클어 버리는 염려가 없다. 그리고, 무려 스크롤 바에 오류를 빨강색으로 표시해준다! 수정된 라인은 노랑색, 커서는 흰색으로 표시해 준다. 수정된 파일 탭에 빨강 동그라미를 표시해주는건 뽀나스. 또, 들여쓰기에 탭과 스페이스가 섞인 코드를 열면 탭으로 통일시켜주는 버튼이 뜨거나, Ctrl+Click을 이용해 정의로 이동하게 해주고, 이클립스와 비슷하게 똑똑한 자동 괄호를 지원해 준다.


다시 본론으로. VS에서 코드를 열면 탭에 파일명이 표시되는데, 개발자에겐 이 탭바가 늘 비좁다. 아래의 그림에서는 6개의 코드를 열었지만 탭은 3개만 표시되며, 다른 코드로 오가는 동안 탭바는 무용지물이 된다. 앞서 언급한 익스텐션을 설치하면 탭바를 세로로 표시할 수도 있지만, 공간을 많이 낭비한다.


구글링으로 이런 방법을 알아냈다. 알고보니 VS의 기본 옵션에서 이 문제를 해결할 수 있었다. 도구 메뉴에서 '옵션...'을 누른다.


옵션창에서 '환경 - 탭 및 창' 섹션을 선택하고 '별도의 행에 고정된 탭 표시'에 체크를 하고 '확인'을 누른다.


필자가 그랬듯이 어쩌면 잠시 머뭇 할 수도 있다. 아무런 변화가 없기 때문. 이제 탭바에서 무슨 일이 있어도 자리를 사수하고 싶은 탭의 핀을 눌러 꽂아준다. 부왈라~! 이제 우리는 탭을 여러줄로 표시할 수 있다.

헐... 이제 봤더니 옵션과 상관없이 핀만 누르면 자동으로 멀티라인이 되어 위치를 사수한다 -_-; 옵션은 필요할 때 변경하면 될 듯.

그런데, 프로젝트를 처음 실행할 때 모든 핀이 뽑혀서 헝클어지는 버그가 있다. PPT의 커스텀 탭 기능이 문제인데, 옵션에서 끄고 VS를 재실행하면 해결된다.



이러한 환경으로 필자의 VS 개발 환경의 만족도가 크게 올랐지만, 이들과 시너지를 내는 화룡정점은 따로 있다. 바로 CodeMaid란 익스텐션인데, 필자가 주목한 기능은 Spade와 Cleanup, Reorganize이다.


Spade는 활성화된 코드의 개요를 보여주고 코드와 동기화된다.

즉, 변수나 델리게이트, 속성등을 region으로 감싸고 접어 놓으면, 개요에서도 접힌다. 그림처럼, 메소드 리스트를 시원하게 펼쳐놓고 왔다 갔다 할 수 있다. 개인적으로 미친듯이 갈구하던 기능으로, MS가 솔루션 익스플로러 + 멤버 목록 콤보박스를 멍청하게 구현해놓은 문제를 해결해준다. 하지만, 개요 업데이트 처리가 빠릿하지 않아 자주 저장을 하면 맥이 끊긴다. 파싱 속도를 미친듯이 높이고 스레드를 적절히 심어준다면 난 정말 사랑에 빠질것이다.

최근 클릭한 멤버 아이템들에 점진적으로 어두워지는 하이라이트를 해준다면 좋을텐데 아쉽다. VS10x Code Map v3는 하이라이트가 과하지만 편리하긴 하다. 하지만, 크기변경도 안되는 작은 폰트와 같이 이해할 수 없는 가독성 디자인과 점점 느려져 VS가 이상해지는 leak 때문에 쓰기 싫다. (게다가 30일간만 무료?다)


Cleanup은 코드를 깔끔하게 정리해준다.

코드를 우클릭해 실행할 수 있다. 불필요한 빈줄은 제거하고 필요한 빈줄은 삽입해서 보기 좋게 만들어 준다. #endregion 뒤에 리전 이름을 적어주거나 사용하지 않는 using문을 제거하고 사전순으로 정렬하며, 줄바꿈 없이 한줄로 길게된 코드을 보기 좋게 여러줄로 바꿔주기도 한다. 개발자의 코딩 습관에 맞게 세밀하게 규칙을 정할 수 있다.

옵션의 'Cleaning - Insert' 섹션에서 'Insert explicit access modifiers on'의 모든 항목을 꺼주면, 한정자가 생략된 모든 멤버에 'private'를 붙이느라 엄한 시간낭비를 하지 않는다. public과 protected 외에는 한정자를 붙이지 않은 필자의 1300라인 짜리 코드를 클린업 하는데 몇 분이 걸려, VS가 다운된 줄 알았다. 보통은 실행후 거의 바로 완료된다.


Reorganize는 코드 멤버의 순서를 재정렬해준다.

필자가 처음 코딩을 배워 1부터 무려 1000까지 합을 구하는 프로그램을 만들 당시만 해도 나중에 작성한 함수가 제일 끝에 있었다. 하지만 지금은 코딩하다 말고 알파벳을 중얼거리며 멤버를 이리 저리 옮기고 있는 자신의 모습을 자주 발견한다. 이들을 정리하지 않아 자신이 만든 코드를 분석하는데 한참 헤맨 경험은 여느 개발자에게나 있을것이다.

혹자는 이 기능에 환호할 수도 있겠다. 미리 정의된 규칙(수정가능)대로 코드 멤버의 순서를 재정렬해준다. 즉 델리게이트, 이벤트, 필드, 속성, 메소드 등으로 그룹 순서를 정리하고 각 그룹 내의 멤버들을 사전순으로 정렬한다. 그룹 순서는 편리하고 쉽게 변경할 수 있다.

이벤트 핸들러들을 코드 뒷쪽에 몰아넣는 등 별도로 구분하고 싶은 멤버들이 있다면 region으로 감싸 위치를 고정할 수도 있다. (물론, region 안의 멤버들 끼리 사전순 배열된다)


CodeMaid는 오픈소스이며 무료로 제공된다. 이 밖에도 많은 익스텐션들이 있으며, 마이크로소프트의 비주얼스튜디오 갤러리에서 살펴보거나, VS의 '도구 - 확장 및 업데이트...'를 눌러 다운로드할 수도 있다.


memo.

티스토리를 사용하면서 내용을 복사/붙여넣기할 때 마다 <span ...></span>들이 누더기처럼 붙는데 몹시 못마땅하다. Ctrl+Shift+V 를 누르면 raw text(서식이 제외된 텍스트)만 들어가긴 한지만, 엔터만 쳐도 이 누더기들은 불어나며 뽀나스로 붙어나는 &nbsp;와 쌍을 이루어  '뭔가 이상한' 부분이 생겨난다.

뭐, 그냥 간단하게 말하면 '이상한 것 같긴 한데 잘 안보인다'고 할 수 있다. 내가 싫어하는 부분은, '왜 잘안보이지만 이상해야되? 그냥 잘 되면 안되?'라는 생각 때문. '뭐 기술적으로 어쩌고 저째서 그렇게 된거야'라는 설명에 '아 그렇구나'하고 넘어가는건 참 싫다. 어려운것도 아니고 하찮은 수준의 기술만으로 해결되는건데 원 참... 개발자라 이런 생각을 하는지도.

정성들여 글을 쓰고 여러번 수정하고난 뒤에 남는 자국들 때문에, 결국 이놈의 HTML 보기에서 태그들을 지운다. 다른 블로그 서비스를 알아봐야겠다.