하드탭 예찬론

1. 탭 사이즈가 너무 넓어요? 하드탭 구려요?

내가 인터뷰 심사관이라면 이런 질문하는 개발자 절대 안뽑는다.
개발 툴에서 탭간격 수정할 수 있다.
본인 입맛에 맞게 수정해서 쓰면 되는 일이다.
그리고 엄밀히 말해 탭 사이즈는 하트탭에 대한 불만이 아니다.

2. 소프트탭은 내가 사용하는 탭사이즈와 상관없이 인덴트가 고정됨

나는 인덴트 2Spaces가 좋다. 근데 4Spaces이면 살짝 짜증이 난다. 그리고 눈에 익숙치 않아서 가독성 자체도 떨어지게 된다.
그래서  공백 4칸을 2칸으로 수정하거나, 탭으로 수정하는건 엄청난 재앙을 초래한다.
그 이유는
1. diff하면 모든 라인이 다 빨간색, 녹색떠서 깜짝 놀라게 될것이다. 한마디로 diff한 후 수정된 내용을 확인하기가 어렵다는 뜻.
2. 더 심각한건 만약 하드탭(혹은 소프트탭 2Spaces)로 수정했다 하더라도, 다른 사람이 다시 4Spaces으로 수정해서 푸쉬하게 될거라는 사실.
이러한 과정은 무한반복이고, 서로 감정만 상하게 될 뿐이다.
앞서 말했지만 탭으로 코딩하면 소스 코드 변경없이 에디터에서 Spaces를 변경 가능하므로 스트레스 받지 않고 내게 익숙한 환경에서 코딩을 할 수 있는것이다.

3. 협업시 다른 사람 탭사이즈 신경 안쓰고 코딩이 가능

다른 사람이 탭사이즈를 2를 쓰든 4를 쓰든 변태라서 8을 쓰든 상관없다.
그냥 에디터에서 본인이 선호하는 사이즈로 지정하면 끝~!

a = { name: "ASSA", id: "a-1" }
b = { name: "B"   , id: "b-1" }

이런식으로 코딩을 한다고 한다면.. 저기선 탭을 쓰면 안되고 스페이스를 사용해야 한다.
그럼 코드 보여지는 것도 별 문제 없다.
하지만 이런식으로 코딩하는건 좋지 못한 습관이다.

var a = "에이",
    c = "씨";

이런식으로 코딩하는 경우도 있다. 이 경우 하드탭은 문제가 된다.
하드탭을 하면 c가 이상한 인덴트를 가진걸로 보이기 때문에 이럴땐 소프트탭이 확실히 유리하다.
하지만 개인적으로 이러한 컨벤션 또한 선호하지 않는다.

var a = "에이", c = "씨";

이렇게 할 수도 있고

var a = "에이";
var c = "씨";

이 컨벤션을 더 선호한다.
중요한건 코딩 컨벤션에 스페이스로 코드 레이아웃을 짜지 않도록 약속하면 이 문제는 해결이 된다.

4. 소스코드용량이 늘어난다.

탭과 스페이스 모두 1byte다.
만약 소프트탭 4spaces로 사용하면 4bytes를 사용하게 되는 것이다.
하지만 탭을 사용하면 1byte면 끝난다.
컴파일이 된다면, 사실 코드 용량은 무시할 수도 있다. 하지만 웹에선 조금 다르다.
2002년? 3년즘에 테스트를 해봤던 거라, 10년전 이야기라 지금은 어떨지 모르겠지만
하드탭이랑 소프트탭 4spaces로 IE 7, FF(당시 최신 버전)에서 테스트했었다. (그땐 크롬은 있지도 않았다)
정확한 숫자가 기억나지는 않지만 30배정도 차이가 났다는건 기억이 난다.
IE, FF 두 브라우져 모드 소프트탭이 현저히 느렸다는것도 기억한다.
뭐 지금은 워낙 렌더링 기술이 좋아져서 상관없을것 같기도 하다.
내가 확인하자니 귀찮고, 누군가 해주면 참 고마울 텐데 말이지 ㅋㅋ

5. 인덴트 체크가 힘들어.

하드탭의 경우 보편적으로 에디터에서 가시적으로 확인을 할 수 있다.
하지만 스페이스는 지원을 안 하는 경우가 더러있다.
이렇게 되면 손으로 커서 한칸 한칸 움직이면서 인덴트가 제대로 되었는지 확인해야 한다.
물런 이렇게 인덴트를 확인해야 하는 불상사가 안생기는게 바람직하다.
텍스트메이트에서 노출되는 tab

6. vi에서 수정

개발을 하다보면 서버에 직접 접속해서 코드를 수정해야될때가 가끔 있다.
뭐 vi를 잘 쓰는 사람이라면 바로 첫 번째 스트링으로 캐릭터를 이동시키겠지(^)
그런데 그 방법을 모르는 사람은 커서로 이동을 할것이다.
자. if안에 for있고 막 그래서 인덴트가 4개정도 들어갔다고 해보자.
소프트탭으로 4spaces일경우 4 * 4 = 16번 키보드 커서를 눌러야한다.
근데 탭으로 하면 4번만 움직이면 된다.
사실 이건 vi숙련도에 따라 달라지는 얘기이긴 하지만..

근데..
왜 상당수의 오픈소스들은 소프트탭일까?
내가 Ruby쪽 진영쪽만 자주 봐서 그런가?
무엇이 소프트탭의 매력일까?

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중