소스코드에서의 들여쓰기와 탭 관련 문의

hyde1004의 이미지

안녕하세요.

임베디드쪽 SW 개발자입니다.
프로젝트별로 여러 개발자가 함께 작업하다보니,
각자의 작업 확경이 모두 다릅니다.

어떤 사람은 Linux에서 vi를 사용해서 코딩을 하고,
또 어떤 사람은 XP에서 울트라에디터를 사용합니다.
저는 XP에서 SourceInsight를 사용해서 코딩을 합니다.

이러다 보니, 내가 보기 좋게 정렬을 해 놓은 소스코드가
다른 사람의 환경에선 들여쓰기와 정렬이 다 틀어집니다.

마찬가지로 다른 사람이 작성한 파일을 내 작업확경에서 열면,
탭 간격이 모두 다르고, 보기가 안 좋더군요.

들여쓰기와 탭간격에 대해서는 논란이 많은 것으로 알고 있습니다.

제가 묻고 싶은 건 2가지인데요.

1. 시스템마다 탭이 다르므로, 탭보다는 스페이스로 들여쓰기를 해야 한다고 누군가 그러던데요.
시스템마다 탭이 다르다 는 어떤 의미이고,
탭대신에 스페이스를 사용하는 경우, 어떤 이점이 있는 것입니까?

2. 환경에 관계없이, 모든 사람에게 동일하게 들여쓰기나 띄어쓰기가 되어 지도록 할 수 있는건가요?
그러한 팁이랄만한 게 있는지요?
제 개인적인 생각으로는 탭 간격을 맞추는 정도로밖에 생각이 안나네요.

inureyes의 이미지

1. 보통 에디터에 따라 탭 설정이 다를 수 있습니다. 여덟칸을 많이 쓰시는데, 인덴테이션이 많은 소스의 경우에는 네칸이나 두칸을 쓰기도 합니다. 일반적인 에디터는 탭이 실제로 표시되는 칸 수를 지정할 수 있습니다. 이게 문제가 될 때는, 에디터에 따라 탭 간격을 다르게 맞춰주는 경우가 생기기 때문입니다. 설명하기 이상한데, 탭문자가 항상 정해진 칸 만큼이 아니라 위아랫줄의 인덴트 상황을 봐서 적당히 맞춰 주게 되는데 그게 에디터마다 다를 가능성이 큽니다.

2. 협동 작업을 하다보면 엄청 저 부분이 귀찮게 되는데요, 가장 손쉬운 방법은 쉘 스크립트와 vi를 적절하게 조합해서 일정 간격으로 탭을 공백 문자로 변환하거나 그 역변환을 해 주는 방법입니다. 솔직히 일반적인 협동 작업시 통일돤 환경을 강요하는 회사가 아니라면 별다른 방법이 없더군요. 주기적으로 캐리지 리턴-라인 피드 문자 변환 (줄바꿈을 처리하는 부분이 OS의 설정이나 에디터에 따라서 또 많이 다릅니다) 을 실행해 주는 것도 소스 전체의 통일성을 위해 도움이 됩니다.

요는, 환경을 설정하고 강요하는 것 보다는 그냥 정기적으로 소스를 맞춰주는 방법이 가장 좋습니다. 너무 다양성이 커서...

'Everything looks different on the other side.' -Ian Malcomm

'Everything looks different on the other side.' -Ian Malcomm

furmuwon의 이미지


도움이 될련지 모르겠습니다 워낙 소스 인사이트가 친숙 해서요
중요한게 우선 코딩 룰이 필요하지 않을가 싶습니다.

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 로 정해진 만큼 변환 될 것으로 추측하고 있습니다. ^^ )

익명 사용자의 이미지

.

madman93의 이미지

제시한 문제 말고 다른 문제가 발생을 해도 감수하면서 사용하는게
맞는것 같습니다. ㅜㅜ

이 기회에 통일성을 가져보심은 어떨지요?
물론 기존의 손에 익은 툴을 놓기란 쉽지않은일 같지만요

---------------------------------------------
svn + trac + my project --> success ???
---------------------------------------------

---------------------------------------------
git init
git add .
git commit -am "project init"
---------------------------------------------

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.