소스코드에서의 들여쓰기와 탭 관련 문의
글쓴이: hyde1004 / 작성시간: 일, 2008/10/05 - 2:10오후
안녕하세요.
임베디드쪽 SW 개발자입니다.
프로젝트별로 여러 개발자가 함께 작업하다보니,
각자의 작업 확경이 모두 다릅니다.
어떤 사람은 Linux에서 vi를 사용해서 코딩을 하고,
또 어떤 사람은 XP에서 울트라에디터를 사용합니다.
저는 XP에서 SourceInsight를 사용해서 코딩을 합니다.
이러다 보니, 내가 보기 좋게 정렬을 해 놓은 소스코드가
다른 사람의 환경에선 들여쓰기와 정렬이 다 틀어집니다.
마찬가지로 다른 사람이 작성한 파일을 내 작업확경에서 열면,
탭 간격이 모두 다르고, 보기가 안 좋더군요.
들여쓰기와 탭간격에 대해서는 논란이 많은 것으로 알고 있습니다.
제가 묻고 싶은 건 2가지인데요.
1. 시스템마다 탭이 다르므로, 탭보다는 스페이스로 들여쓰기를 해야 한다고 누군가 그러던데요.
시스템마다 탭이 다르다 는 어떤 의미이고,
탭대신에 스페이스를 사용하는 경우, 어떤 이점이 있는 것입니까?
2. 환경에 관계없이, 모든 사람에게 동일하게 들여쓰기나 띄어쓰기가 되어 지도록 할 수 있는건가요?
그러한 팁이랄만한 게 있는지요?
제 개인적인 생각으로는 탭 간격을 맞추는 정도로밖에 생각이 안나네요.
Forums:
1. 보통 에디터에
1. 보통 에디터에 따라 탭 설정이 다를 수 있습니다. 여덟칸을 많이 쓰시는데, 인덴테이션이 많은 소스의 경우에는 네칸이나 두칸을 쓰기도 합니다. 일반적인 에디터는 탭이 실제로 표시되는 칸 수를 지정할 수 있습니다. 이게 문제가 될 때는, 에디터에 따라 탭 간격을 다르게 맞춰주는 경우가 생기기 때문입니다. 설명하기 이상한데, 탭문자가 항상 정해진 칸 만큼이 아니라 위아랫줄의 인덴트 상황을 봐서 적당히 맞춰 주게 되는데 그게 에디터마다 다를 가능성이 큽니다.
2. 협동 작업을 하다보면 엄청 저 부분이 귀찮게 되는데요, 가장 손쉬운 방법은 쉘 스크립트와 vi를 적절하게 조합해서 일정 간격으로 탭을 공백 문자로 변환하거나 그 역변환을 해 주는 방법입니다. 솔직히 일반적인 협동 작업시 통일돤 환경을 강요하는 회사가 아니라면 별다른 방법이 없더군요. 주기적으로 캐리지 리턴-라인 피드 문자 변환 (줄바꿈을 처리하는 부분이 OS의 설정이나 에디터에 따라서 또 많이 다릅니다) 을 실행해 주는 것도 소스 전체의 통일성을 위해 도움이 됩니다.
요는, 환경을 설정하고 강요하는 것 보다는 그냥 정기적으로 소스를 맞춰주는 방법이 가장 좋습니다. 너무 다양성이 커서...
'Everything looks different on the other side.' -Ian Malcomm
'Everything looks different on the other side.' -Ian Malcomm
참고하세요.
http://www.jwz.org/doc/tabs-vs-spaces.html
http://kldp.org/node/61892
Source Insight
도움이 될련지 모르겠습니다 워낙 소스 인사이트가 친숙 해서요
중요한게 우선 코딩 룰이 필요하지 않을가 싶습니다.
1. " 절때 탭을 쓰지 않는다. Tab 을 spcae 로 무조건 사용 "
( VS 를 예를 들면 Tab size 는 4로 Insert space 로 )
( 소스인사이트로 예를 들면 ALT+T 누르신 후 Expand tabs 체크, Tab width 는 4 로 )
( 울트라 에디트에도 이러한 기능이 있을 것이라 생각 됩니다.... )
2. 가변 폰트를 쓰지 않는다. (Fixedsys 추천)
이 두가지의 둘만 있다면 같은 스타일에서는 들여쓰기가 문제 없으리라 생각 됩니다.
이미 Tab 으로 사용된 것을 spcae 로 치환 하는 방법은
소스 인사이트에서 한 파일을 모두 블럭 잡은 이 후에 ALT + E 누르시고 Special edit 에서 Tabs to Space 를 수행 하시면
될것입니다~ ( Tab width 로 정해진 만큼 변환 될 것으로 추측하고 있습니다. ^^ )
유용한 정보 갑사합니다.
.
각자의 툴이 다르다면
제시한 문제 말고 다른 문제가 발생을 해도 감수하면서 사용하는게
맞는것 같습니다. ㅜㅜ
이 기회에 통일성을 가져보심은 어떨지요?
물론 기존의 손에 익은 툴을 놓기란 쉽지않은일 같지만요
---------------------------------------------
svn + trac + my project --> success ???
---------------------------------------------
---------------------------------------------
git init
git add .
git commit -am "project init"
---------------------------------------------
댓글 달기